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 プロジェクトファイルは、含めるモジュールやビルド方法など、アプリケーションの様々な側面を設定します。
次の表は、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 コードが小型化によって削除される場合は、そのコードを残すルールをこのファイルに追加する必要があります。 |
Unity プロジェクトを Gradle プロジェクトとしてエクスポートすると、以下の 2 つのモジュールを持つ Gradle プロジェクトが Unity によって作成されます。
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 エンジンライブラリ libil2cpp 、libmain 、および 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 を有効にしてください。 |