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.
Consultare la pagina del manuale di mtouch(1), che contiene informazioni su tutti i possibili usi dello strumento mtouch.
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 /Developer/MonoTouch/usr/bin, 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.
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.
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
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.
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.
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.
Per informazioni dettagliate su altre opzioni della riga di comando, vedere la pagina del manuale di mtouch(1).