Condividi tramite


Distribuire un'app iOS usando il riavvio rapido

In genere, quando si compila un'app, il codice viene compilato e combinato con altre risorse di progetto per compilare un bundle di app distribuito nel simulatore o nel dispositivo. Con questo modello, quando si apporta una modifica all'app, è necessario creare e distribuire un nuovo bundle di app. Anche se le compilazioni incrementali possono contribuire a ridurre il tempo di compilazione, le distribuzioni richiedono in genere la stessa quantità di tempo indipendentemente dalle dimensioni della modifica.

Il riavvio rapido dell'interfaccia utente app multipiattaforma .NET (.NET MAUI) consente di distribuire rapidamente un'app MAUI .NET in un dispositivo iOS locale a 64 bit, da Visual Studio 2022, senza richiedere un host di compilazione Mac. Rimuove la necessità di una ricompilazione completa del bundle dell'app eseguendo il push delle modifiche al bundle di app esistente già presente nel dispositivo iOS connesso in locale. Supporta le modifiche apportate ai file di codice, alle risorse e ai riferimenti ai progetti, consentendo di testare rapidamente le modifiche apportate all'app durante lo sviluppo.

Importante

Il riavvio rapido non è una sostituzione per l'esperienza di compilazione completa fornita da un host di compilazione Mac. Ad esempio, può distribuire solo app che usano la configurazione di compilazione di debug e non supporta librerie statiche e framework, XCFrameworks o pacchetti di risorse di associazione. Per altre informazioni, vedere Limitazioni.

È necessario soddisfare diversi requisiti per l'uso del riavvio a caldo per distribuire un'app MAUI .NET in un dispositivo iOS connesso in locale:

  • È necessario usare Visual Studio 2022 versione 17.3 o successiva.
  • È necessario che nel computer di sviluppo sia installato iTunes (Microsoft Store o versione a 64 bit).
  • È necessario disporre di un account Apple Developer e di una registrazione apple Developer Program a pagamento.

Impostazione

Per configurare il riavvio a caldo, seguire questa procedura:

  1. Nella barra degli strumenti di Visual Studio usare l'elenco a discesa Destinazione di debug per selezionare Dispositivi locali iOS e quindi la voce Dispositivo locale:

    Screenshot of choosing the initial debug target for hot restart.

  2. Nella barra degli strumenti di Visual Studio selezionare Dispositivo locale:

    Screenshot of the initial debug target chosen for hot restart.

    Verrà visualizzata l'Installazione guidata del riavvio rapido, che consente di configurare un dispositivo iOS locale per la distribuzione con riavvio rapido.

  3. Nell'Installazione guidata Riavvio rapido selezionare Avanti:

    Screenshot of the first step in the setup hot restart wizard.

  4. Se iTunes non è installato, l'installazione guidata richiederà di installarlo. Nella configurazione guidata del riavvio rapido selezionare Scarica iTunes:

    Screenshot of the second step in the setup hot restart wizard.

    Nota

    iTunes può essere installato da Microsoft Store o scaricandolo da Apple.

    Attendere il download di iTunes e quindi installarlo. Se lo installi da Microsoft Store, una volta completata l'installazione, aprilo, segui le istruzioni aggiuntive per abilitarlo per individuare i dispositivi connessi in locale.

  5. Nella configurazione guidata del riavvio rapido selezionare Avanti per passare al passaggio successivo della procedura guidata che richiederà di connettere un dispositivo iOS locale:

    Screenshot of the initial third step in the setup hot restart wizard.

  6. Connessione il dispositivo iOS nel computer di sviluppo tramite un cavo USB. Nel dispositivo potrebbe essere visualizzata una richiesta che richiede di considerare attendibile il computer di sviluppo. Nel dispositivo fare clic su Considera attendibile e seguire eventuali richieste aggiuntive del dispositivo.

  7. Nella configurazione guidata del riavvio rapido selezionare Avanti dopo aver rilevato il dispositivo iOS locale:

    Screenshot of the completed third step in the setup hot restart wizard.

    Nota

    Se l'installazione guidata non riesce a rilevare il dispositivo iOS locale, disconnettere quindi riconnettere il dispositivo iOS locale dal computer di sviluppo. Assicurarsi inoltre che iTunes riconosca il dispositivo iOS locale.

  8. Nella configurazione guidata del riavvio rapido fare clic sul collegamento ipertestuale Accedi con un singolo account per configurare il riavvio rapido per l'uso del singolo account Apple Developer Program:

    Screenshot of the initial fourth step in the setup hot restart wizard.

    Verrà visualizzata la finestra di dialogo Account singolo .

    Nota

    In alternativa, per configurare il riavvio rapido per l'uso di un account Apple Developer aziendale, fare clic sul collegamento ipertestuale Accedi con un account aziendale e immettere le credenziali nella finestra di dialogo visualizzata. Procedere quindi con il passaggio 12.

  9. Creare una chiave API Connessione di App Store. Sarà necessario disporre di un account Apple Developer e di una registrazione apple Developer Program a pagamento. Per informazioni sulla creazione di una chiave API Connessione di App Store, vedere Creazione di chiavi API per App Store Connessione API in developer.apple.com.

  10. Nella finestra di dialogo Account singolo immettere i dati della chiave API di App Store Connessione:

    Screenshot of the completed dialog for adding an Apple Individual account.

    I dati nome, ID autorità di certificazione e ID chiave sono disponibili in App Store Connessione selezionando Utenti e accesso e quindi la scheda Chiavi. La chiave privata può essere scaricata anche da questo percorso:

    Screenshot of Apple App Store Connect API details.

  11. Nella finestra di dialogo Account singolo fare clic sul pulsante Aggiungi. Verrà chiusa la finestra di dialogo Account singolo .

  12. Nella configurazione guidata del riavvio rapido fare clic sul pulsante Fine:

    Screenshot of the completed fourth step in the setup hot restart wizard.

    L'account apple Developer Program verrà aggiunto a Visual Studio e l'installazione guidata del riavvio rapido verrà chiusa.

  13. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto e scegliere Proprietà.

  14. Nelle proprietà del progetto espandere iOS e selezionare Firma bundle. Usare l'elenco a discesa Schema per selezionare Provisioning automatico e quindi fare clic sul collegamento ipertestuale Configura provisioning automatico:

    Screenshot of automatic provisioning enabled within the iOS property page in Visual Studio.

    Verrà visualizzata la finestra di dialogo Configura provisioning automatico.

  15. Nella finestra di dialogo Configura provisioning automatico selezionare il team per la chiave API Connessione:

    Screenshot of the automatic provisioning dialog when it's correctly configured.

    Visual Studio completerà il processo di provisioning automatico. Fare quindi clic sul pulsante OK per chiudere la finestra di dialogo Configura provisioning automatico.

    Nota

    È consigliabile usare il provisioning automatico in modo che sia possibile configurare facilmente dispositivi iOS aggiuntivi per la distribuzione. Tuttavia, è possibile usare il provisioning manuale se nel computer sono presenti i profili di provisioning corretti.

Distribuire ed eseguire il debug usando il riavvio rapido

Dopo aver eseguito la configurazione iniziale, il dispositivo iOS connesso locale verrà visualizzato nel menu a discesa destinazione di debug. Per distribuire ed eseguire il debug dell'app:

  1. Assicurarsi che il dispositivo iOS connesso locale sia sbloccato.

  2. Nella barra degli strumenti di Visual Studio selezionare il dispositivo iOS connesso locale nell'elenco a discesa destinazione di debug e fare clic sul pulsante Esegui per compilare l'app e distribuirla nel dispositivo iOS locale:

    Screenshot of the chosen debug target for hot restart.

  3. Dopo aver distribuito l'app, Visual Studio visualizzerà la finestra di dialogo Connessione debugger:

    Screenshot of the dialog asking you to launch the app on your device.

    Avviare l'app nel dispositivo e Visual Studio connetterà il debugger all'app in esecuzione e la finestra di dialogo Connessione debugger verrà chiusa.

Durante il debug dell'app, è possibile modificare il codice C# e premere il pulsante di riavvio nella barra degli strumenti di Visual Studio per riavviare la sessione di debug con le nuove modifiche applicate:

Screenshot of the restart button on the Visual Studio toolbar.

Impedire l'esecuzione del codice

Il HOTRESTART simbolo del preprocessore può essere usato per impedire l'esecuzione del codice durante il debug con il riavvio a caldo:

#if !HOTRESTART
  // Code here won't be executed when debugging with hot restart
#endif

Abilitare il riavvio a caldo

Il riavvio rapido è abilitato per impostazione predefinita in Visual Studio 2022. Se è stata disabilitata in precedenza, può essere abilitata selezionando Strumenti > Opzioni dalla barra dei menu di Visual Studio. Successivamente, nella finestra di dialogo Opzioni espandere Xamarin e selezionare iOS Impostazioni. Assicurarsi quindi che l'opzione Abilita riavvio frequente sia selezionata:

Screenshot of how to enable hot restart within Visual Studio.

Limiti

Esistono limitazioni quando si usa il riavvio a caldo:

  • Può essere usato solo per distribuire app che usano la configurazione di compilazione di debug. È comunque necessario un host di compilazione Mac per compilare, firmare e distribuire l'app a scopo di produzione.
  • I file Storyboard e XIB non sono supportati e l'app potrebbe arrestarsi in modo anomalo se tenta di caricarli in fase di esecuzione.
  • Le librerie e i framework iOS statici non sono supportati e potrebbero verificarsi errori di runtime o arresti anomali se l'app tenta di caricarli.
  • I pacchetti di risorse XCFrameworks e binding non sono supportati.
  • I cataloghi di asset non sono supportati. Quando si usa il riavvio rapido, l'app visualizzerà un'icona .NET e una schermata di avvio.

Risoluzione dei problemi

iOS usa un watchdog che monitora i tempi di avvio e la velocità di risposta delle app e termina le app che non rispondono. Ad esempio, watchdog termina le app che bloccano il thread principale per un periodo di tempo significativo. Nei dispositivi iOS precedenti, il watchdog può terminare un'app distribuita usando il riavvio rapido prima che il debugger sia connesso. La soluzione alternativa consiste nel ridurre la quantità di elaborazione eseguita nel percorso di avvio dell'app e usare un dispositivo iOS più recente.

Per segnalare altri problemi, usare lo strumento di feedback all'indirizzo Help > Send Feedback > Segnala un problema.