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

Android の Gradle

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

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

バージョン互換性

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

Unity バージョン Gradle バージョン Android Gradle プラグインバージョン
2023.1 7.6 7.3.1
2022.3 7.2 7.1.2
2021.3 6.1.1 4.0.1

If you want to use a custom Gradle or Android Gradle plugin version, it’s important to know the version compatibility between Gradle and the Android Gradle plug-in. For information on this, refer to Update 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 module: Contains the application’s name and all of its icons. This is a simple Android application module that launches Unity. You can replace it with your own application.
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 A standard Android Gradle project file that Unity merges into the final Android App Manifest. It contains settings specific to the launcher module.

Important: If multiple manifest files specify different values for the same setting, the manifest merging process fails and you must fix it manually. You can specify rules for the manifest merger to automatically decide how to solve merge conflicts. For information on how to do this, refer to Manage manifest files.

For information on how to influence the contents of this file, refer to Modify Gradle project files.
      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 A Unity-specific file that contains ProGuard configurations for Unity java code (code in unity-classes.jar plug-in). Configurations are effective when Minification is enabled in Player settings (or if it’s enabled by manually modifying gradle build files).
  src unityLibrary モジュールのソースコードとリソースを格納する、標準の Android Gradle プロジェクトディレクトリです。Unity はこのソースコードとリソースを main サブディレクトリに配置します。
    main A standard Android Gradle project directory that contains the unityLibrary module’s source code and resources. Unity only supports the main source set. For more information about source sets, refer to Create source sets.
      AndroidManifest.xml Unity によって最終的な Android アプリマニフェスト 内にマージされる、標準の Android Gradle プロジェクトファイルです。unityLibrary モジュール固有の設定が含まれています。

このファイルの内容に影響を与えるには、カスタムの Custom Main Manifest を提供してください。
      assets プロジェクトのアセットを格納する標準の Android Gradle ディレクトリです。Unity は Unity プロジェクトのリソースを bin サブディレクトリに配置します。
        bin A standard Android Gradle project directory that Unity adds all the Unity project’s resources to.
      java unityLibrary モジュール用のコンパイルされていない Java ソースファイルを格納する、標準の Android Gradle プロジェクトディレクトリです。Unity は、このディレクトリを、UnityPlayerActivity ソースファイルを格納するためだけに使用します。UnityPlayerActivity の拡張方法については UnityPlayerActivity の Java コードの拡張に関するドキュメント を参照してください。
      jniLibs A standard Android Gradle project directory that contains native code libraries that the unityLibrary module uses. Unity places the libil2cpp, libmain, and libunity Unity engine libraries in this directory. Unity also places any Native (C++) plug-ins in this directory.
      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 アプリマニフェスト