Uso di mtouch per creare un bundle di app Xamarin.iOS

Le applicazioni per iPhone vengono fornite come bundle dell'applicazione. Si tratta di directory con estensione .app che contengono il codice, i dati, i file di configurazione e un manifesto, che l'iPhone usa per acquisire informazioni sull'applicazione.

Il processo di conversione di un eseguibile .NET in applicazione viene per lo più eseguito dal comando mtouch, uno strumento che integra molti dei passaggi necessari per convertire l'applicazione in bundle. Questo strumento viene usato anche per avviare l'applicazione nel simulatore e per distribuire il software in un dispositivo touch iPhone o iPod reale.

Istruzioni dettagliate

Consultare la pagina del manuale di mtouch(1), che contiene informazioni su tutti i possibili usi dello strumento mtouch.

Installazione

In un Mac, mtouch è in bundle con Xamarin.iOS. È disponibile nella directory seguente:

/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/bin

Per rendere mtouch comodo usare, aggiungere la relativa directory padre alla variabile di ambiente di sistema PATH.

Ad esempio, per eseguire questa operazione in Bash, aggiungere la riga seguente alla fine del file ~/.bash_profile:

export PATH=$PATH:/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/bin

Avviso

Per usare mtouch, non fare affidamento sull'esistenza di mtouch, un collegamento simbolico che punta a /Library/Frameworks/Xamarin.iOS.framework/Versions/Current/bin. Questo collegamento simbolico esiste solo per mantenere la compatibilità con versioni precedenti di MonoTouch non installate in /Library/Frameworks/... e potrebbe non essere più disponibile in una versione futura.

Compilazione

Il comando mtouch può compilare il codice in tre modi diversi:

  • Compilare il codice per i test del simulatore.
  • Compilare il codice per la distribuzione del dispositivo.
  • Distribuire l'eseguibile nel dispositivo.

Compilazione per il simulatore

Quando si inizia, lo scenario usato più spesso consiste nel provare l'applicazione nel simulatore, quindi nell'usare mtouch -sim per compilare il codice in un pacchetto del simulatore. Ecco come:

$ mtouch -sim Hello.app hello.exe

Compilazione per il dispositivo

Per compilare il software per il dispositivo, è necessario compilare l'applicazione usando l'opzione mtouch -dev e specificare inoltre il nome del certificato usato per firmare l'applicazione. Il codice seguente mostra in che modo viene compilata l'applicazione per il dispositivo:

$ mtouch -dev -c "iPhone Developer: Miguel de Icaza" foo.exe

In questo caso specifico, viene usato il certificato "iPhone Developer: Miguel de Icaza" per firmare l'applicazione. Questo passaggio è molto importante o il dispositivo fisico rifiuterà di caricare l'applicazione.

Esecuzione dell'applicazione

Avvio nel simulatore

L'avvio nel simulatore è molto semplice quando è disponibile un bundle dell'applicazione:

$ mtouch --sdkroot /Applications/Xcode.app -launchsim Hello.app 

Se il flag --sdkroot non è impostato, per impostazione predefinita viene usato il percorso xcode-select e viene restituito l'avviso seguente:

eg: warning MT0061: No Xcode.app specified (using --sdkroot), using the system Xcode as reported by 'xcode-select --print-path': /Applications/Xcode.app/Contents/Developer

La riga di comando precedente produce un output simile al seguente:

Launching application
Application launched
PID: 98460
Press enter to terminate the application

È consigliabile mantenere un log dei file di output standard e dei file di errore standard per semplificare il debug. L'output di Console.WriteLine passa a stdout, mentre l'output di Console.Error.WriteLine e qualsiasi messaggio di errore di runtime passano a stderr.

A questo scopo, usare i flag --stdout e --stderr:

../../tools/mtouch/mtouch --launchsim=Hello.app --stdout=output --stderr=error

Se l'applicazione non riesce, è possibile visualizzare l'output e l'errore per diagnosticare il problema.

Distribuzione a un dispositivo

Per distribuire l'applicazione nel dispositivo, è necessario effettuare il provisioning del dispositivo in base a quanto descritto nel documento sulla gestione dei dispositivi di Apple. Dopo aver completato correttamente il provisioning del dispositivo, è possibile usare il comando mtouch per distribuire un bundle ".app" compilato nel dispositivo. A questo scopo, usare questo comando:

$ mtouch —sdkroot /Applications/Xcode.app -installdev=MyApp.app

Se il flag --sdkroot non è impostato, per impostazione predefinita viene usato il percorso xcode-select e viene restituito l'avviso seguente:

eg: warning MT0061: No Xcode.app specified (using --sdkroot), using the system Xcode as reported by 'xcode-select --print-path': /Applications/Xcode.app/Contents/Developer

Questi passaggi vengono in genere eseguiti da Visual Studio per Mac.

Riferimento

Per informazioni dettagliate su altre opzioni della riga di comando, vedere la pagina del manuale di mtouch(1).