mtouch を使用する Xamarin.iOS アプリのバンドル
iPhone アプリケーションはアプリケーション バンドルとして出荷されています。 これは拡張子 .app
を持つディレクトリであり、コード、データ、構成ファイル、ユーザーのアプリケーションを iPhone が認識するためのマニフェストが含まれます。
.NET 実行可能ファイルをアプリケーションに変換するプロセスは主に mtouch
コマンドで行われます。これは、アプリケーションをバンドルに変換するために必要なさまざまな手順を統合するツールです。 このツールは、シミュレーターのアプリケーションを起動するときや実際の iPhone または iPod Touch デバイスにソフトウェアを展開するときにも利用されます。
詳しい手順
mtouch(1) のマニュアル ページをご覧ください。mtouch ツールのあらゆる利用方法が紹介されています。
インストール
Mac では、mtouch
は Xamarin.iOS にバンドルされています。 次のディレクトリにあります。
/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/bin
mtouch
を使いやすくするには、その親ディレクトリをシステムの PATH
環境変数に追加します。
たとえば、Bash でこれを行うには、~/.bash_profile ファイルの末尾に次の行を追加します。
export PATH=$PATH:/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/bin
警告
mtouch
を使う場合、/Developer/MonoTouch/usr/bin (/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/bin を示すシンボリック リンク) が存在することに依存しないでください。 このシンボリック リンクは、/Library/Frameworks/... にインストールされなかった古い MonoTouch リリースとの互換性を維持するためにのみ存在し、将来のリリースでは存在しなくなる可能性があります。
ビルド
mtouch
コマンドは 3 とおりの方法でコードをコンパイルできます。
- シミュレーター テストのためにコンパイルします。
- デバイス配置のためにコンパイルします。
- 実行可能ファイルをデバイスに配置します。
シミュレーターのビルド
使用を開始するときに、最も一般的に利用されるシナリオは、シミュレーターでアプリケーションを試すことです。mtouch -sim
を利用し、コードをシミュレーター パッケージにコンパイルします。 これは次のように行われます。
$ mtouch -sim Hello.app hello.exe
デバイスのビルド
デバイスのソフトウェアをビルドするには、mtouch -dev
オプションを利用してアプリケーションをビルドします。また、アプリケーションの署名に利用する証明書の名前を指定する必要があります。 次は、デバイス用のアプリケーションをビルドする方法を示したものです。
$ mtouch -dev -c "iPhone Developer: Miguel de Icaza" foo.exe
この事例では、"iPhone Developer: Miguel de Icaza" という証明書でアプリケーションに署名します。 この手順は非常に重要です。この手順がなければ、物理デバイスはアプリケーションの読み込みを拒否します。
アプリケーションを実行する
シミュレーターで起動する
アプリケーション バンドルがあれば、シミュレーターでの起動は非常に簡単です。
$ mtouch --sdkroot /Applications/Xcode.app -launchsim Hello.app
--sdkroot
フラグが設定されていない場合、既定で xcode-select パスに設定され、次の警告が表示されます。
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
このコマンド ラインで次のような出力が生成されます。
Launching application
Application launched
PID: 98460
Press enter to terminate the application
標準出力のログと標準エラー ファイルも保存しておくことを強くお勧めします。デバッグに役に立ちます。 Console.WriteLine
は stdout
に出力され、Console.Error.WriteLine
とその他の実行時エラー メッセージは stderr
に出力されます。
これを行うには、--stdout
フラグと --stderr
フラグを使用します。
../../tools/mtouch/mtouch --launchsim=Hello.app --stdout=output --stderr=error
アプリケーションにエラーが発生した場合、出力とエラーを表示し、問題を診断できます。
デバイスの展開
デバイスに配置するには、Apple のデバイスの管理に関するドキュメントに基づいてデバイスをプロビジョニングする必要があります。 デバイスが適切にプロビジョニングされると、mtouch コマンドを利用し、コンパイル済みの ".app" をデバイスに配置できます。 これは次のコマンドで行います。
$ mtouch —sdkroot /Applications/Xcode.app -installdev=MyApp.app
--sdkroot
フラグが設定されていない場合、既定で xcode-select パスに設定され、次の警告が表示されます。
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
以上の手順は通常、Visual Studio for Mac で実行されます。
リファレンス
その他のコマンド ライン オプションについては、mtouch(1) マニュアル ページをご覧ください。