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.WriteLinestdout に出力され、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) マニュアル ページをご覧ください。