Version: 2022.3
言語: 日本語
Android 用のビルドと提出
Android アプリマニフェストのオーバーライド

Gradle テンプレート

Gradle テンプレートは、Gradle で Android アプリケーションをビルドする方法を設定します。各 Gradle テンプレートは 1 つの Gradle プロジェクトを表します。Gradle プロジェクトは他の Gradle プロジェクトを含むことや、他の Gradle プロジェクトに依存することができます。

Gradle テンプレートファイル

Gradle テンプレートは以下のファイルで構成されています。

ファイル 場所 含まれるもの
baseProjectTemplate.gradle エクスポートしたプロジェクトの root/build.gradle フォルダー 最終的な Gradleプロジェクトのすべてのモジュールに影響する設定情報が含まれています。どの Android Gradle Plugin のバージョンを使用するか、また java プラグインの場所を指定します。場所は、このプロジェクト内のオンラインレポジトリと java プラグインの組み合わせです。
launcherTemplate.gradle エクスポートしたプロジェクトの root/launcher/build.gradle folder フォルダー Android アプリケーションのビルド方法 (バンドル、署名、APK 分割) のインストラクションが含まれています。unityLibrary プロジェクトに依存し、.apk ファイルまたはアプリケーションバンドルを出力します。
mainTemplate.gradle エクスポートしたプロジェクトの root/unityLibrary/build.gradle フォルダー Unity をライブラリにしてビルドする方法のインストラクションが含まれます。 .aar ファイルを出力します。Unity エディターで Unity テンプレートをカスタムテンプレートでオーバーライドできます。詳細は、このページのカスタムの Gradle ビルドテンプレートの提供についてを参照してください。
libTemplate.gradle 任意 Android Library Project プラグインに build.gradle ファイルが含まれていない場合、Unity は libTemplate.gradle ファイルをテンプレートとして使用し、ファイルを生成します。Unity が build.gradle ファイルを生成した後、またはプラグインのディレクトリに既に存在する場合、Unity はプラグインを Gradle プロジェクトへコピーします。
settingsTemplate.gradle エクスポートしたプロジェクトの root/settings.gradle ファイル Gradle ビルドシステムがプロジェクトをビルドするときに含むべきモジュールの名前を指定します。Unity テンプレートを Unity エディターのカスタムテンプレートで上書きすることができます。詳細については、このページのカスタム Gradle ビルドテンプレートの提供についてを参照してください。
gradleTemplate.properties エクスポートしたプロジェクトの root/gradle.properties ファイル Gradle ビルドシステムを設定し、Java 仮想マシン (JVM) ヒープ のサイズなどのプロパティを指定します。

Gradle のカスタムテンプレートの使用

Unity が生成する Gradle プロジェクトファイルをより細かく制御するには、Unity のデフォルトの Gradle テンプレートファイルを上書きします。これは、以下のように行います。

  1. Edit > Project Settings の順に選択して Project Settings ウィンドウを開きます。
  2. Player タブを選択し、Android の Player 設定 を開きます。
  3. Publishing Settings セクションで、カスタムテンプレートを作成したい Gradle プロジェクトファイルタイプに対応するチェックボックスを有効にします。これにより、Gradle プロジェクトのテンプレートファイルが作成され、ファイルへのパスが表示されます。
  4. テンプレートファイルを修正して、最終的な Gradle プロジェクトファイルの形式と内容を制御します。

テンプレート変数

以下の変数をカスタム Gradle テンプレートファイルで使用できます。

変数 説明 
DEPS プロジェクト依存関係のリスト。プロジェクトが使用するライブラリのリスト。
APIVERSION ビルドする API バージョン。Unity はこれと TARGETSDKVERSION を同じ値 (Android Player SettingsTarget API Level) に設定します。
MINSDKVERSION アプリケーションをサポートする API の最低バージョン。
BUILDTOOLS 使用する SDK ビルドツール。
TARGETSDKVERSION ターゲットとする API バージョン。Unity はこれと APIVERSION を同じ値 (Android Player SettingsTarget API Level) に設定します。
APPLICATIONID Android アプリケーション ID (例えば com.mycompany.myapp)
MINIFY_DEBUG デバッグビルドを小さくするかどうかを示します。
PROGUARD_DEBUG デバッグビルドの小型化のために ProGuard を使用するかどうかを指定します。
MINIFY_RELEASE リリースビルドを小型化するかどうかを示します。
PROGUARD_RELEASE リリースビルドの小型化のために ProGuard を使用するかどうかを指定します。
USER_PROGUARD 小型化に使用するカスタム ProGuard ファイルを指定します。
SIGN このビルドが署名されている場合は、signingConfigs セクションを行ってください。
SIGNCONFIG ビルドが署名されているかどうかを示します。このプロパティが signingConfig.release に設定されている場合、ビルドは署名されています。
DIR_GRADLEPROJECT Unity が Gradle プロジェクトを作成するディレクトリ。
DIR_UNITYPROJECT Unity プロジェクトのディレクトリ。
PLAY_ASSET_PACKS アプリケーションに加える アセットパック を指定します。

カスタムの settingsTemplate.gradle ファイルには、以下の変数を加えることもできます。

変数 説明 
INCLUDES Gradle プロジェクトに含む Android ライブラリプラグインのリスト。

カスタムの gradleTemplate.properties ファイルには、以下の変数を加えることもできます。

変数 説明 
JVM_HEAP_SIZE Java 仮想マシン (JVM) ヒープ](https://www.ibm.com/docs/en/integration-bus/10.0?topic=development-jvm-heap-sizing) の最大サイズ。
STREAMING_ASSETS Steaming Assets フォルダーにある、Gradle が圧縮すべきでないファイルのリスト。
ADDITIONAL_PROPERTIES 以下のようなアプリケーションの追加プロパティが含まれます。
• Gradle テンプレートのバージョン。
• Unity プロジェクトのパス。
• アプリケーションが Android App Bundle 公開形式を使用する場合、ネイティブライブラリを圧縮しておくことを示すフラグ。

エクスポートされた Gradle プロジェクトを C# を使用して修正する

Unity が組み立てた後に Gradle プロジェクトを変更するには、IPostGenerateGradleAndroidProject を継承するクラスを作成し、OnPostGenerateGradleAndroidProject 関数をオーバーライドしてください。この関数は、パラメーターとして unityLibrary モジュールへのパスを受け取り、それを使って C# スクリプトを通してアプリケーションのマニフェストとリソースにアクセスできます。

注意: Unity はインクリメンタルな (増分) ビルドパイプラインを使用するようになり、同じ Gradle プロジェクトを連続したビルドに再利用するようになりました。これは、Unity がビルドごとに新しい Gradle プロジェクトを作成しなくなったため、この API を使用して行った変更が蓄積されることを意味します。例えば、この API を使って Gradle プロジェクトにファイルを追加する場合、最初のビルドは期待通りに動作しますが、2 回目のビルドではそのファイルはすでに存在しています。2 つ目の例は、この API を使用して特定のファイルに許可を追加する場合です。各連続するビルドは、許可のための別のエントリーを追加します。行いたい変更が、まだビルドに存在しないことを確認することが非常に重要です。

Android 用のビルドと提出
Android アプリマニフェストのオーバーライド