Version: 2022.3
言語: 日本語
Android の要件と互換性
Android アプリマニフェスト

Android の Gradle

Gradle は、多くのビルドプロセスを自動化し、一般的なビルドエラーの多くを防止するビルドシステムです。Unity はすべての Android ビルドに Gradle を使用します。Unity で出力パッケージ (.apk、.aab) をビルドするか、Gradle プロジェクトを Unity からエクスポートして、Android Studio などの外部ツールでビルドできます。

トピックごとの詳細は、以下を参照してください。

バージョン互換性

Gradle のバージョンと Unity のバージョンの互換性は、以下の表の通りです。

Unity バージョン Gradle バージョン Android Gradle プラグインバージョン
2022.2
2022.3
7.2 7.1.2
2022.1
2021.3
2021.2
2021.1 (2021.1.16f1 以降)
2020.3 (2020.3.15f1 以降)
6.1.1 4.0.1
2021.1 (2021.1.15f1 まで)
2020.1, 2020.2, 2020.3 (2020.3.14f1 まで)
5.6.4 4.0.1
2019.4 5.1.1 3.4.0

Gradle または Android Gradle プラグインのカスタムバージョンを使用したい場合は、Gradle とAndroid Gradle プラグインとのバージョン互換性について知ることが重要です。詳細は Gradle のアップデート を参照してください。

Gradle プロジェクトファイル

Gradle プロジェクトファイルは、含めるモジュールやビルド方法など、アプリケーションの様々な側面を設定します。

次の表は、Unity プロジェクト用に存在する Gradle プロジェクトファイルの一覧と、それぞれの役割を説明しています。

Gradle プロジェクトファイル 目的
Main Manifest このファイルには、Android アプリケーションに関する重要なメタデータが含まれています。Main/Unity Library Manifest の機能の詳細は、Unity Library Manifest を参照してください。
Unity Launcher Manifest このファイルには、Android アプリケーションのランチャーに関する重要なメタデータが含まれています。Unity Launcher Manifest の機能の詳細は、Unity Launcher Manifest を参照してください。
Main Gradle このファイルには、Android アプリケーションをライブラリとしてビルドする方法に関する情報が含まれています。
Launcher Gradle このファイルには、Android アプリケーションのビルド方法に関する指示が含まれています。
Base Gradle このファイルには、他のすべてのテンプレートおよび Gradle プロジェクトの間で共有される設定が含まれています。
Gradle Properties このファイルには、Gradle のビルド環境の設定が含まれています。これには、JVM (Java Virtual Machine) メモリ構成、Gradle が複数の JVM を使用してビルドできるようにするためのプロパティ、小型化を行うツールを選択するプロパティ、App Bundle のビルド時にネイティブ lib ファイル を圧縮しないためのプロパティが含まれます。
Gradle Settings このファイルには、アプリケーションに必要な外部依存関係を解決するためのアーティファクトリポジトリの宣言が含まれています。
Proguard このファイルには、小型化処理の構成設定が含まれます。残すべき Java コードが小型化によって削除される場合は、そのコードを残すルールをこのファイルに追加する必要があります。

Gradle プロジェクトの構造

Unity プロジェクトを Gradle プロジェクトとしてエクスポートすると、以下の 2 つのモジュールを持つ Gradle プロジェクトが Unity によって作成されます。

  • UnityLibrary モジュール: Unity のランタイムおよびプロジェクトデータを含んでいます。このモジュールは、他の任意の Gradle プロジェクト内に統合可能なライブラリです。これを使用して Unity を既存の Android アプリケーションに埋め込むことができます。
  • Launcher モジュール: アプリケーションの名前とそのすべてのアイコンを含んでいます。Unity を起動する簡単な Android アプリケーションモジュールです。これは独自のアプリケーションに置き換えることができます。
File 説明 
build.gradle Gradle プロジェクト内のすべてのモジュールに影響を与える基本の Gradle ファイルです。Gradle プロジェクトの使用するプラグインのバージョンを指定します。そうしたプラグインの 1 つは Android Gradle プラグインです。

このファイルの内容に影響を与えるには、カスタムの Base Gradle Template を提供してください。
gradle.properties 標準の Gradle プロジェクトファイルです。アプリケーションのビルド方法を設定します。さらに、Unity は Streaming Assets ディレクトリ内のアセット名を追加し、これらのアセットを最終的なアプリケーションに加え、Gradle はこれらを圧縮すべきではないことを指定します。

このファイルの内容に影響を与えるには、カスタムの Gradle Properties Template を提供してください。

このファイルに加えることができるプロパティについては、Gradle プロパティファイル を参照してください。
launcher Launcher モジュール とそれに関連するすべてを含むディレクトリです。
  build.gradle Launcher モジュールのビルド方法が記された標準の Gradle プロジェクト build.gradle ファイルで、ビルドに含める依存関係のリストを含んでいます。Unity では Launcher モジュールは unityLibrary モジュールに依存します。つまり、Launcher モジュールのビルド時に unityLibrary がビルドされて最終的な結果に含まれます。

このファイルの内容に影響を与えるには、カスタムの Launcher Gradle Template を提供してください。
  src Launcher モジュールのソースコードとリソースを格納する、標準の Android Gradle プロジェクトディレクトリです。Unity はこのソースコードとリソースを main サブディレクトリ内に配置します。
    main Launcher モジュールのソースコードとリソースを格納する、標準の Android Gradle プロジェクトディレクトリです。Unity は main ソースセットのみをサポートします。ソースセットに関する詳細は、ソースセットの作成 を参照してください。
      AndroidManifest.xml Unity によって最終的な Android アプリマニフェスト 内にマージされる、標準の Android Gradle プロジェクトファイルです。ここには Launcher モジュール固有の設定が含まれます。

重要: 複数のマニフェストファイルが同じ設定に異なる値を指定する場合、マニフェストのマージのプロセスが失敗し、これを手動で修正する必要があります。マニフェストマージャーに規則を指定することで、マージ競合の解決方法を自動的に決定することができます。これを行う方法は、マニフェストファイルを管理する を参照してください。

このファイルの内容に影響を与える方法は、Android アプリマニフェストのオーバーライド を参照してください。
      jniLibs Launcher モジュールの使用するネイティブコードライブラリを格納する、標準の Android Gradle プロジェクトディレクトリです。
      res 最終的なアプリケーションに含めるリソースを格納する、標準の Android Gradle プロジェクトディレクトリです。このリソースとは、アプリケーションアイコン、アプリケーションがランタイムでアクセスするテキスト、およびアプリケーションのスタイルの設定記述です。

このディレクトリ内のリソースを指定するには、Android の Player 設定 内で、アプリケーションアイコンとプロジェクト名を設定してください。
local.properties ビルドシステムの環境を設定する、標準の Android Gradle プロジェクトファイルです。Unity は、エクスポートされた Gradle プロジェクトが Unity エディターの使用した SDK と同じものをデフォルトで使用するようにするために、ここに SDK へのパスを指定します。以前の Gradle バージョンでは NDK のパスもここに指定されていましたが、現在は Unity が Launcher および unityLibrary モジュールの build.gradle ファイルで指定する形になっています。

このファイルに含めることができるプロパティについては、Gradle プロパティファイル を参照してください。
settings.gradle Android Gradle プロジェクトを構成するすべてのモジュールを指定する、標準の Android Gradle プロジェクトファイルです。Unity がエクスポートするプロジェクトでは、これは通常、launcher および unityLibrary モジュールのみを指定します。ただし、Unity プロジェクトが Play Asset Delivery を使用する場合は、各アセットパックが別々のモジュールなので、それらもこのファイルにはそれらも含まれます。また、このファイルは、Gradle プロジェクトプラグインが格納される場所も指定します。場所は、このプロジェクト内のオンラインリポジトリと Java プラグインの組み合わせです。

このファイルの内容に影響を与えるには、カスタムの Gradle Settings Template を提供してください。
unityLibrary unityLibrary モジュール とそれに関連するすべてを含むディレクトリです。
  build.gradle unityLibrary モジュールのビルド方法が記された標準の Gradle プロジェクト build.gradle ファイルで、ビルドに含める依存関係のリストが含まれています。Unityでは、unityLibrary モジュールは Unity プロジェクト内のすべての プラグイン に依存します。

このファイルの内容に影響を与えるには、カスタムの Main Gradle Template を提供してください。
  libs unityLibrary モジュール用の Android Archive(.aar) および Java Archive(.jar) プラグインを格納する、共通の Android Gradle プロジェクトディレクトリです。

エクスポートされた Unity プロジェクトの場合、ここには、unity-classes.jar と、Unity プロジェクト内のすべての .jar および .aar プラグインが含まれます。

ノート: このディレクトリには Android Library Projects プラグインは格納されません。代わりに、これらのプラグインは、別々のモジュールとして Gradle プロジェクト内にコピーされます。
    unity-classes.jar Unity エンジンの使用する Java コードを格納する、Unity 専用の Java プラグインです。
  proguard-unity.txt Unity の Java コード (unity-classes.jar プラグイン内のコード) の ProGuard 設定を格納する、Unity 専用のファイルです。設定は、Player 設定で Minification が有効になっている場合 (あるいは Gradle ビルドファイルの手動修正によって有効にされている場合) に有効です。
  src unityLibrary モジュールのソースコードとリソースを格納する、標準の Android Gradle プロジェクトディレクトリです。Unity はこのソースコードとリソースを main サブディレクトリに配置します。
    main unityLibrary モジュールのソースコードとリソースを格納する、標準の Android Gradleプロジェクトディレクトリです。Unity は main ソースセットのみをサポートします。ソースセットに関する詳細は、ソースセットの作成 を参照してください。
      AndroidManifest.xml Unity によって最終的な Android アプリマニフェスト 内にマージされる、標準の Android Gradle プロジェクトファイルです。unityLibrary モジュール固有の設定が含まれています。

このファイルの内容に影響を与えるには、カスタムの Custom Main Manifest を提供してください。
      assets プロジェクトのアセットを格納する標準の Android Gradle ディレクトリです。Unity は Unity プロジェクトのリソースを bin サブディレクトリに配置します。
        bin Unity によって Unity プロジェクトのすべてのリソースが追加される、標準の Android Gradle プロジェクトディレクトリです。
      java unityLibrary モジュール用のコンパイルされていない Java ソースファイルを格納する、標準の Android Gradle プロジェクトディレクトリです。Unity は、このディレクトリを、UnityPlayerActivity ソースファイルを格納するためだけに使用します。UnityPlayerActivity の拡張方法については UnityPlayerActivity の Java コードの拡張に関するドキュメント を参照してください。
      jniLibs unityLibrary モジュールの使用するネイティブコードライブラリを格納する、標準の Android Gradle プロジェクトディレクトリです。Unity は、Unity エンジンライブラリ libil2cpplibmain、および libunity をこのディレクトリに配置します。また、すべての [Native (C++) プラグイン (AndroidNativePlugins)] もこのディレクトリに配置されます。
      res 最終的なアプリケーションに含めるリソースを格納する、標準の Android Gradle プロジェクトディレクトリです。エクスポートされた Unity プロジェクトの場合、unityLibrary モジュールの res ディレクトリには、unityLibrary モジュールが使用するスタイルの定義のみが含まれます。
proguard-user.txt プロジェクトの Java コードとサードパーティの Java プラグインの ProGuard 設定を格納する、Unity プロジェクト固有のファイルです。ProGuard-unity.txt 同様、Gradle は、小型化が有効にされた場合にこのファイルを使用します。

このファイルを作成するには、Android の Player 設定Custom Proguard File を有効にしてください。
Android の要件と互換性
Android アプリマニフェスト