Version: 2023.1
言語: 日本語
iOS の要件と互換性
Unity Xcode プロジェクトの構造

Unity が iOS アプリケーションをビルドする方法

Unity は Xcode を使用して iOS アプリケーションをビルドするので、ビルドプロセスや、Unity がどのように Xcode と相互作用するかを理解することは有用です。最終的なビルドのほとんどの側面は、Player 設定 などの Unity ウィンドウで設定できますが、より踏み込んだ制御を行うには、Unity で Xcode プロジェクトをビルドし、Xcode プロジェクトファイルを直接変更する必要があります。

ビルドプロセス

  1. Unity は、プロジェクトリソース、コードライブラリ、およびプラグインを Unity プロジェクトから収集し、これらを使用して有効な Xcode プロジェクト を作成します。
  2. Unity は、Unity プロジェクトの Player 設定とビルド設定に基づいて Xcode プロジェクトを更新します。Replace モードと Append モード のどちらを使用するかによって、加えた変更が置換されるか、保存されます。Append モードでは、加えた変更が保持され、特定の値のみが上書きされます。Replace モードでは、加えた全ての変更を上書きする新しいプロジェクトが作成されます。
  3. Unityは、C# スクリプトに基づいて C++ ソースファイルを生成し、生成された Xcode プロジェクト内にそれを配置します。その後、Xcode が IL2CPP プログラムを起動し、C++ ソースファイルを libGameAssembly.a および il2cpp.a と呼ばれるライブラリにコンパイルします。
  4. Xcode がプロジェクトをスタンドアロンアプリケーションにビルドし、接続されたデバイスまたは Xcode シミュレーター 上にデプロイして起動します。

Replace モードと Append モード

すでに別の Xcode プロジェクトが含まれているディレクトリにプロジェクトをビルドすると、Unity が警告を表示し、どのように続行するかの選択肢を提示します。オプションは以下の 2 つです。

  • Replace: ターゲット Xcode プロジェクトディレクトリ内の全てが削除され、空になったディレクトリ内に新しい Xcode プロジェクトが生成されます。
  • Append: ターゲット Xcode プロジェクトのルートディレクトリと Data および Libraries サブディレクトリ内の全てのファイルが削除され、これらのディレクトリ内に、新しく生成された Xcode プロジェクトの内容が追加されます。その後、Unity プロジェクトの最新の変更に基づいて Xcode プロジェクトファイルが更新されます。Unity は、同じ Unity iOS バージョンで生成された既存の Xcode プロジェクトに関してのみ、このモードをサポートします。

ノート: Append モードを使用する場合は、Classes サブフォルダーにカスタムネイティブコードを保存できます。Unity はそれらを上書きしませんが、定期的にバックアップを取ることが推奨されます。

インクリメンタルビルドパイプライン

Unity は、インクリメンタルビルドパイプライン を使用して iOS 用の Xcode プロジェクトを生成します。これは、Unity が Inforamtion Property List (plist) ファイルや Entitlement ファイルなどのファイルの増分をビルド/生成することを意味します。インクリメンタルビルドパイプラインの使用する iOS ファイルやアセットを変更または移動するコールバックを実装する場合は、非インクリメンタルビルドの作成 を参照してください。

その他の参考資料

iOS の要件と互換性
Unity Xcode プロジェクトの構造