Installare e configurare strumenti per la compilazione con iOS

È possibile usare Visual Studio con lo sviluppo per dispositivi mobili multipiattaforma con strumenti C++ per modificare, eseguire il debug e distribuire il codice iOS nel simulatore iOS o in un dispositivo iOS. Tuttavia, a causa delle restrizioni di licenza, il codice deve essere compilato ed eseguito in remoto in un Mac. Per compilare ed eseguire le app iOS usando Visual Studio, è necessario installare e configurare l'agente remoto vcremote, sul Mac. L'agente remoto vcremote gestisce le richieste di compilazione da Visual Studio ed esegue l'app in un dispositivo iOS connesso al Mac o nel simulatore iOS sul Mac.

Nota

Per informazioni sull'uso di servizi di Mac ospitati nel cloud anziché su Mac, vedere Configurare Visual Studio per connettersi al Mac ospitato su cloud. Le istruzioni riguardano la compilazione con Visual Studio Tools per Apache Cordova. Per usare le istruzioni per compilare con C++, sostituire vcremote con remotebuild.

Dopo aver installato gli strumenti per la compilazione con iOS, vedere di nuovo questo articolo. Descrive i modi per configurare e aggiornare rapidamente vcremote per lo sviluppo iOS in Visual Studio e nel Mac.

Prerequisiti

Per installare e usare l'agente remoto vcremote per sviluppare codice per iOS, è prima necessario disporre di questi prerequisiti:

  • Un computer Mac che esegue macOS Mojave 10.14 o versione successiva

  • Un ID Apple

  • Un account attivo del programma per sviluppatori di Apple

    È possibile ottenere un account gratuito che consente il trasferimento in locale delle app in un dispositivo iOS solo a scopo di test, ma non per la distribuzione.

  • Xcode 10.2.1 o versione successiva

    Xcode può essere scaricato dall'App Store.

  • Strumenti da riga di comando Xcode

    Per installare gli strumenti da riga di comando Xcode, aprire l'app Terminale nel Mac e immettere il comando seguente:

    xcode-select --install

  • Un account ID Apple configurato in Xcode come identità di firma per firmare le app

    Per visualizzare o impostare l'identità di firma in Xcode, aprire il menu Xcode e scegliere Preferences. Selezionare Accounts e scegliere il proprio ID Apple, quindi scegliere il pulsante View Details . Per istruzioni dettagliate, vedere Add your Apple ID account (Aggiungere l'account ID Apple).

    Per informazioni dettagliate sui requisiti per la firma, vedere What is app signing (Che cos'è la firma delle app).

  • Se si usa un dispositivo iOS per lo sviluppo, un profilo di provisioning configurato in Xcode per il dispositivo

    Xcode fornisce la firma automatica, in cui crea i certificati di firma in base alle esigenze. Per informazioni dettagliate sulla firma automatica di Xcode, vedere Firma automatica.

    Se si vuole eseguire la firma manuale, è necessario creare un profilo di provisioning per l'app. Per informazioni dettagliate sulla creazione di profili di provisioning, vedere Create a development provisioning profile (Creare un profilo di provisioning di sviluppo).

  • Node.js versione 18.12.1 e npm versione 8.19.2

    Installare la versione 18.12.1 di Node.js nel Mac. Se si installa il pacchetto Node.js, dovrebbe essere disponibile con npm versione 8.19.2. Altre versioni di Node.js e npm potrebbero non supportare alcuni moduli usati in vcremote, che possono causare l'esito negativo dell'installazione di vcremote. È consigliabile installare Node.js usando una gestione pacchetti, ad esempio Node Version Manager. Evitare di usare il comando sudo per installare Node.js, perché alcuni moduli non possono essere installati quando si usa sudo.

Installare vcremote per iOS

Quando si installa il carico di lavoro Sviluppo per dispositivi mobili con C++, Visual Studio può comunicare con l'agente remoto vcremote in esecuzione sul Mac per trasferire file, compilare ed eseguire l'app iOS e inviare comandi di debug.

Prima di installare vcremote, assicurarsi di aver soddisfatto i prerequisiti e aver completato i passaggi di installazione in Installare lo sviluppo per dispositivi mobili multipiattaforma con C++.

Per scaricare e installare vcremote

  • Dall'app Terminale sul Mac verificare che la versione Node.js attualmente in uso sia la versione 18.12.1 richiesta. Per verificare la versione, eseguire il comando :

    node -v

    Se non è la versione corretta, potrebbe essere necessario seguire le istruzioni di installazione Node.js nei prerequisiti. Riavviare quindi Node.js.

  • Dopo aver verificato che il Node.js necessario sia in uso, eseguire questo comando per installare vcremote in tale versione Node.js:

    npm install -g --unsafe-perm vcremote

    L'opzione di installazione globale (-g) è consigliata, ma non necessaria. Se non si usa l'opzione di installazione globale, vcremote viene installato nel percorso attivo corrente nell'app Terminale.

    Durante l'installazione, vcremote viene installata e la modalità sviluppatore viene attivata nel Mac. Sono installati anche Homebrew e due pacchetti npm e vcremote-libvcremote-utils. Al termine dell'installazione, è possibile ignorare eventuali avvisi relativi a dipendenze facoltative ignorate.

    Nota

    Per installare Homebrew, è necessario l'accesso a sudo (amministratore). Se è necessario installare vcremote senza sudo, è possibile installare Homebrew manualmente in un usr/local percorso e aggiungerla bin al percorso. Per altre informazioni, vedere la documentazione di Homebrew. Per abilitare manualmente la modalità sviluppatore, immettere questo comando nell'app Terminal: DevToolsSecurity -enable

Se si esegue l'aggiornamento a una nuova versione di Visual Studio, è necessario eseguire anche l'aggiornamento alla versione corrente di vcremote. Per aggiornare vcremote, ripetere i passaggi per scaricare e installare l'agente remoto.

Avviare vcremote

L'agente remoto vcremote deve essere in esecuzione per Visual Studio per compilare ed eseguire il codice iOS. Visual Studio deve essere associato a vcremote prima di poter comunicare. Per impostazione predefinita, vcremote viene eseguito in modalità di connessione protetta, che richiede il trasferimento di certificati client e server tra i computer Visual Studio e Mac.

Nota

La versione 1.0.19 o successiva di vcremote richiede almeno Visual Studio 2022 versione 17.5.0 Preview 1 o successiva. Se si usa Visual Studio 2022 versione 17.4 o una versione precedente, installare vcremote versione 1.0.17.

Per avviare vcremote

  • Dall'app Terminal nel Mac, immettere:

    vcremote

    Questo comando avvia l'agente remoto con una directory di compilazione predefinita di ~/vcremote. Per altre opzioni di configurazione, vedere Configurare vcremote nel Mac.

La prima volta che si avvia vcremote e ogni volta che si crea un nuovo certificato server, vengono fornite le informazioni necessarie per configurare la connessione in Visual Studio. Le informazioni includono il nome host e la porta. Se si intende configurare l'agente remoto in Visual Studio usando il nome host, eseguire il ping del Mac da Windows usando il nome host per verificare che sia raggiungibile. In caso contrario, potrebbe essere necessario usare l'indirizzo IP.

È possibile usare l'agente remoto in modalità non protetta. In modalità non protetta, l'agente remoto può essere associato a Visual Studio usando una semplice connessione HTTP che non crittografa i dati. Usa la modalità non protetta a tuo rischio. È consigliabile usare una modalità protetta per connettersi:

Visual Studio 2022 versione 17.5 e successive con vcremote 1.0.19 e versioni successive:

In vcremote 1.0.19 e versioni successive vcremote segnala il percorso di un server-cert.pem file di certificato, che deve essere caricato in Visual Studio.

Visual Studio 2022 versione 17.4 e versioni precedenti con vcremote 1.0.17 e versioni precedenti:

La versione 1.0.17 e le versioni precedenti di vcremote generano un PIN per la comunicazione sicura con le versioni di Visual Studio tramite Visual Studio 2022 versione 17.4.

Screenshot of the Mac Terminal window that shows the host name, port, and PIN reported when VC remote is started.

Il PIN generato può essere usato una sola volta ed è valido per un periodo limitato. Se Visual Studio non viene associato all'agente remoto prima della scadenza, sarà necessario generare un nuovo PIN. Per altre informazioni, vedere Generate a new security PIN.

Per disabilitare la modalità di connessione protetta

  • Per disabilitare la modalità di connessione protetta in vcremote, immettere questo comando nell'app Terminal su Mac:

    vcremote --secure false

Per abilitare la modalità di connessione protetta

  • Per abilitare la modalità di connessione protetta, immettere questo comando:

    vcremote --secure true

Dopo aver avviato l'agente remoto, è possibile usarlo da Visual Studio fino a quando non viene arrestato.

Per arrestare l'agente remoto

  • Nella finestra Terminal in cui è in esecuzione l'agente vcremote, immettere CTRL+C.

Configurare vcremote in Visual Studio

Per connettersi all'agente remoto vcremote da Visual Studio, è necessario specificare la configurazione remota nelle opzioni di Visual Studio. Visual Studio usa le stesse informazioni per connettersi all'agente remoto su Mac ad ogni uso. Non è necessario associare di nuovo Visual Studio all'agente remoto, a meno che non venga generato un nuovo certificato di sicurezza nel Mac o che il nome host o l'indirizzo IP cambi.

Per configurare vcremote da Visual Studio 2022 versione 17.5 e successive

  1. Se l'agente non è già in esecuzione sul Mac, seguire la procedura descritta in Avviare l'agente remoto. Il Mac deve eseguire vcremote per Visual Studio per associare correttamente, connettere e compilare il progetto.

  2. Nel Mac, ottenere il nome host o l'indirizzo IP del Mac.

    È possibile ottenere l'indirizzo IP usando il comando ifconfig in una finestra Terminal. Usare l'indirizzo inet elencato sotto l'interfaccia di rete attiva.

  3. Nella barra dei menu di Visual Studio scegliere Opzioni strumenti>.

  4. Nella finestra di dialogo Opzioni espandere C++>iOS multipiattaforma.>

  5. Nei campi Nome host , e Porta immettere i valori specificati dall'agente remoto quando è stato avviato. Il nome host può essere il nome DNS o l'indirizzo IP del Mac. Il numero di porta predefinito è 3030.

    Nota

    Se non è possibile effettuare il ping del Mac usando il nome host, potrebbe essere necessario usare l'indirizzo IP.

  6. Se si usa l'agente remoto nella modalità di connessione protetta predefinita, selezionare la casella di controllo Secure e trasferire il file dal Mac a Visual Studio per il server-cert.pem caricamento. Scegliere quindi il pulsante Genera per generare un nuovo client-cert.pem file, che dovrebbe essere visualizzato sul desktop. Trasferire quindi il certificato client nel Mac in /vcremote/certs/Authorized-Clients. È possibile trasferire più file di certificato client in questa directory, in modo che più computer Visual Studio autorizzati possano inviare richieste a questo Mac.

    Nota

    Se si usa un'unità USB per trasferire i certificati, eliminare i certificati dall'unità USB al termine del trasferimento.

  7. Scegliere Associa per abilitare l'associazione.

    Screenshot of the Tools Options dialog for iOS pairing. The host name, the port, the Secure checkbox, and the Remote Root values are set.

    L'associazione persiste fino a quando non si modifica il nome host, la porta o si genera un nuovo server o certificato client. Se si modifica il nome host o la porta nella finestra di dialogo Opzioni , è possibile scegliere il pulsante Ripristina per annullare la modifica e ripristinare l'associazione precedente.

    Se l'associazione non riesce, verificare che l'agente remoto sia in esecuzione seguendo i passaggi descritti in Avviare l'agente remoto. Seguire la procedura per generare un nuovo certificato server e Generare un nuovo certificato client. Se si usa il nome host del Mac, provare a usare l'indirizzo IP nel campo Nome host.

  8. Aggiornare il nome della cartella nel campo Radice remota per specificare la cartella usata dall'agente remoto nella directory home (~) su Mac. Per impostazione predefinita, l'agente remoto usa /Users/<username>/vcremote come radice remota.

  9. Scegliere OK per salvare le impostazioni di connessione di associazione remota.

Per configurare vcremote dalle versioni precedenti a Visual Studio 2022 versione 17.5

  1. Se l'agente non è già in esecuzione sul Mac, seguire la procedura descritta in Avviare l'agente remoto. Il Mac deve eseguire vcremote per Visual Studio per associare correttamente, connettere e compilare il progetto.

  2. Nel Mac, ottenere il nome host o l'indirizzo IP del Mac.

    È possibile ottenere l'indirizzo IP usando il comando ifconfig in una finestra Terminal. Usare l'indirizzo inet elencato sotto l'interfaccia di rete attiva.

  3. Nella barra dei menu di Visual Studio scegliere Opzioni strumenti>.

  4. Nella finestra di dialogo Opzioni espandere C++>iOS multipiattaforma.>

  5. Nei campi Nome host , e Porta immettere i valori specificati dall'agente remoto quando è stato avviato. Il nome host può essere il nome DNS o l'indirizzo IP del Mac. Il numero di porta predefinito è 3030.

    Nota

    Se non è possibile effettuare il ping del Mac con il nome host, potrebbe essere necessario usare l'indirizzo IP.

  6. Se si usa l'agente remoto nella modalità di connessione protetta predefinita, selezionare la casella di controllo Proteggi , quindi immettere il valore PIN specificato dall'agente in remoto nel campo Pin . Se si usa l'agente remoto in modalità di connessione non protetta, deselezionare la casella di controllo Proteggi e lasciare il campo Pin .

  7. Scegliere Associa per abilitare l'associazione.

    Screenshot of the Tools Options dialog for iOS pairing. The host name, the port, the Secure checkbox, the pin, and the Remote Root values are set.

    L'associazione viene mantenuta finché non si modifica il nome host o la porta. Se si modifica il nome host o la porta nella finestra di dialogo Opzioni , per annullare la modifica, scegliere il pulsante Ripristina per ripristinare l'associazione precedente.

    Se l'associazione non riesce, verificare che l'agente remoto sia in esecuzione seguendo i passaggi descritti in Avviare l'agente remoto. Se è trascorso troppo tempo dopo la generazione del PIN dell'agente remoto, seguire la procedura descritta in Generare un nuovo PIN di sicurezza. Quindi riprovare. Se si usa il nome host del Mac, provare a usare l'indirizzo IP nel campo Nome host.

  8. Aggiornare il nome della cartella nel campo Radice remota per specificare la cartella usata dall'agente remoto nella directory home (~) su Mac. Per impostazione predefinita, l'agente remoto usa /Users/<username>/vcremote come radice remota.

  9. Scegliere OK per salvare le impostazioni di connessione di associazione remota.

Generate a new security PIN

Si applica a: Visual Studio 2022 versione 17.4 e versioni precedenti, usando vcremote versione 1.0.17 e precedenti.

Quando si avvia l'agente remoto per la prima volta, il PIN generato è valido per un intervallo di tempo limitato (per impostazione predefinita, 10 minuti). Se non si associa Visual Studio all'agente remoto prima della scadenza del tempo, sarà necessario generare un nuovo PIN.

Per generare un nuovo PIN

  1. Arrestare l'agente oppure aprire una seconda finestra dell'app Terminal nel Mac e usarla per immettere il comando.

  2. Immettere questo comando nell’app Terminal:

    vcremote generateClientCert

    L'agente remoto genera un nuovo PIN temporaneo. Per associare Visual Studio usando il nuovo PIN, ripetere i passaggi in Configurare l'agente remoto in Visual Studio.

Generare un nuovo certificato client

Si applica a: Visual Studio 2022 versione 17.5 e versioni successive, usando vcremote versione 1.0.19 e successive.

Quando si associa in Visual Studio, si genererà un nuovo client-cert.pem file. Trasferire il file del certificato nel computer di compilazione Mac in /vcremote/certs/Authorized-Clients. Questo certificato consente al Mac di autorizzare le richieste provenienti dal computer Visual Studio.

Generare un nuovo certificato del server

Si applica a: Visual Studio 2022 versione 17.5 e versioni successive, usando vcremote versione 1.0.19 e successive.

Per motivi di sicurezza, i certificati del server che associano Visual Studio all'agente remoto sono collegati all'indirizzo IP o al nome host del Mac. Se questi valori vengono modificati, sarà necessario generare un nuovo certificato del server e quindi riconfigurare Visual Studio con i nuovi valori.

Per generare un nuovo certificato del server

  1. Arrestare l'agente vcremote .

  2. Immettere questo comando nell’app Terminal:

    vcremote resetServerCert

  3. Quando viene richiesta la conferma, immettere Y.

  4. Per associare Visual Studio al Mac, trasferire il file appena generato server-cert.pem dal Mac e caricarlo in Visual Studio, ripetendo i passaggi descritti in Configurare l'agente remoto in Visual Studio.

Configurare vcremote nel Mac

È possibile configurare l'agente remoto usando varie opzioni della riga di comando. Ad esempio, è possibile specificare la porta per l'ascolto delle richieste di compilazione e specificare il numero massimo di build da gestire nel file system. Per impostazione predefinita, il limite è di 10 build. L'agente remoto rimuove le build eccedenti il numero massimo all'arresto.

Per configurare l'agente remoto

  • Per vedere un elenco completo dei comandi dell'agente remoto, nell'app Terminal immettere:

    vcremote --help

  • Per disabilitare la modalità protetta e abilitare connessioni semplici basate su HTTP, immettere:

    vcremote --secure false

    Quando si usa questa opzione, deselezionare la casella di controllo Secure .When you use this option, clear the Secure checkbox.

  • Per specificare un percorso per i file dell'agente remoto, immettere:

    vcremote --serverDir directory_path

    Sostituire directory_path con il percorso nel Mac per inserire file di log, compilazioni e certificati server. Per impostazione predefinita, il percorso è /Users/<username>/vcremote. In questa posizione, le build vengono organizzate per numero.

  • Per usare un processo in background per acquisire stdout e stderr in un file denominato server.log, immettere:

    vcremote > server.log 2>&1 &

    Il server.log file consente di risolvere i problemi di compilazione.

  • Per eseguire l'agente usando un file di configurazione al posto dei parametri della riga di comando, immettere:

    vcremote --config config_file_path

    Sostituire config_file_path con il percorso di un file di configurazione in formato JSON. Le opzioni di avvio e i relativi valori non devono includere trattini.

Risolvere i problemi dell'agente remoto

Debug in un dispositivo iOS

Se il debug in un dispositivo iOS non funziona, potrebbero verificarsi problemi con lo ideviceinstaller strumento, che viene usato per comunicare con un dispositivo iOS. Questo strumento viene in genere installato da Homebrew durante l'installazione di vcremote. Seguire i passaggi successivi come soluzione alternativa:

Aprire l'app Terminale e aggiornare ideviceinstaller e le relative dipendenze eseguendo i comandi seguenti nell'ordine:

  1. Verificare che Homebrew sia aggiornato

    brew update

  2. Disinstallare libimobiledevice e usbmuxd

    brew uninstall --ignore-dependencies libimobiledevice

    brew uninstall --ignore-dependencies usbmuxd

  3. Installare la versione più recente di libimobiledevice e usbmuxd

    brew install --HEAD usbmuxd

    brew unlink usbmuxd

    brew link usbmuxd

    brew install --HEAD libimobiledevice

  4. Disinstallare e reinstallare ideviceinstaller

    brew uninstall ideviceinstaller

    brew install ideviceinstaller

Verificare che ideviceinstaller sia in grado di comunicare con il dispositivo provando a elencare le app installate nel dispositivo:

ideviceinstaller -l

Se ideviceinstaller segnala un errore che indica che non è possibile accedere alla cartella /var/db/lockdown, modificare il privilegio nella cartella usando questo comando:

sudo chmod 777 /var/db/lockdown

Verificare quindi di nuovo se ideviceinstaller è in grado di comunicare con il dispositivo.

Vedi anche