ドキュメント

Unity Engine

Unity Engine

Android の Gradle

Introduces the Gradle build system, its version compatibility with Unity, and the structure of a Gradle project.
読み終わるまでの所要時間 27 分最終更新 1ヶ月前

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

バージョン互換性

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

Unity バージョン

Gradle バージョン

Android Gradle プラグインバージョン

6000.08.48.3.0
その他の Unity リリースと互換性のある Gradle および Android Gradle プラグインのバージョンについては、2022.3、2021.3 を参照してください。
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 アプリケーションモジュールです。これは独自のアプリケーションに置き換えることができます。

ファイル

説明

launcher
Launcher モジュール とそれに関連するすべてを含むディレクトリです。
  
src
Launcher モジュールのソースコードとリソースを格納する、標準の Android Gradle プロジェクトディレクトリです。Unity はこのソースコードとリソースを
main
サブディレクトリに配置します。
    
main
Launcher モジュールのソースコードとリソースを格納する、標準の Android Gradle プロジェクトディレクトリです。Unity は main ソースセットのみをサポートします。ソースセットの詳細は、ソースセットの作成 を参照してください。
      
res
最終的なアプリケーションに含めるリソースを格納する、標準の Android Gradle プロジェクトディレクトリです。このリソースとは、アプリケーションアイコン、アプリケーションがランタイムでアクセスするテキスト、およびアプリケーションのスタイルの設定記述です。

このディレクトリ内のリソースを指定するには、Android Player 設定 内で、アプリケーションアイコンとプロジェクト名を設定してください。
      
AndroidManifest.xml
Unity によって最終的な Android アプリマニフェスト 内にマージされる、標準の Android Gradle プロジェクトファイルです。Launcher モジュール固有の設定が含まれています。

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

このファイルの内容の変更方法は、Gradle プロジェクトファイルの修正 を参照してください。
  
build.gradle
Launcher モジュールのビルド方法が記された標準の Gradle プロジェクト build.gradle ファイルで、ビルドに加える依存関係のリストが含まれています。Unity では Launcher モジュールは unityLibrary モジュールに依存するため、Launcher モジュールをビルドすると、unityLibrary がビルドされ、最終結果に追加されます。

このファイルの内容を変更するには、カスタムの Launcher Gradle Template を用意します。
  
setupSymbols.gradle
Unity 固有のファイル。デバッグシンボルファイルを App Bundle に埋め込み、従来型の
.so
拡張子のシンボルファイルを作成するためのビルドスクリプトが含まれています。
shared
プロジェクト内の複数のモジュールに適用される共通の設定情報を格納するディレクトリ。
  
keepUnitySymbols.gradle
Unity 固有のファイルで、スタックトレースを解決するためのランタイムバイナリにデバッグメタデータを格納するスクリプトが含まれています。
unityLibrary
unityLibrary モジュール とそれに関連するすべてを含むディレクトリです。
  
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 プラグインです。
  
src
unityLibrary モジュールのソースコードとリソースを格納する、標準の Android Gradle プロジェクトディレクトリです。Unity はこのソースコードとリソースを
main
サブディレクトリに配置します。
    
main
unityLibrary モジュールのソースコードとリソースを格納する、標準の Android Gradle プロジェクトディレクトリです。Unity は main ソースセットのみをサポートします。ソースセットの詳細は、ソースセットの作成 を参照してください。
      
assets
プロジェクトのアセットを格納する標準の Android Gradle ディレクトリです。Unity は Unity プロジェクトのリソースを
bin
サブディレクトリに配置します。
        
bin
標準の Android Gradle プロジェクトディレクトリです。Unity は、Unity プロジェクトのすべてのリソースをここに追加します。
      
java
unityLibrary モジュール用のコンパイルされていない Java ソースファイルを格納する、標準の Android Gradle プロジェクトディレクトリです。Unity は、UnityPlayerActivity ソースファイルを格納するためだけにこのディレクトリを使用します。UnityPlayerActivity の拡張方法は UnityPlayerActivity の Java コードの拡張に関するドキュメント を参照してください。
      
jniLibs
unityLibrary モジュールの使用するネイティブコードライブラリを格納する、標準の Android Gradle プロジェクトディレクトリです。Unity は、
libil2cpp
、
libmain
、
libunity
Unity エンジンライブラリをこのディレクトリに配置します。また、すべての Native (C++) プラグイン もこのディレクトリに配置されます。
      
jniStaticLibs
unityLibrary モジュールが
libil2cpp.so
の作成に使用する
baselib.a
ライブラリを格納する、標準の Android プロジェクトディレクトリです。
      
res
最終的なアプリケーションに含めるリソースを格納する、標準の Android Gradle プロジェクトディレクトリです。エクスポートされた Unity プロジェクトの場合、unityLibrary モジュールの
res
ディレクトリには、unityLibrary モジュールが使用するスタイルの定義のみが含まれます。
      
AndroidManifest.xml
Unity によって最終的な Android アプリマニフェスト 内にマージされる、標準の Android Gradle プロジェクトファイルです。unityLibrary モジュール固有の設定が含まれています。

このファイルの内容を変更するには、カスタムの Custom Main Manifest を設定してください。
  
symbols
デバッグシンボル のビルド設定を使用してアプリケーションのシンボルファイルを生成する場合に Unity が追加するディレクトリです。このディレクトリには、デバッグメタデータと Unity ライブラリのシンボルテーブルセクションを含むファイルが格納されます。Android Studio でディレクトリパスを設定して、デバッグ中に関数名を解決できます。
  
build.gradle
unityLibrary モジュールのビルド方法が記された標準の Gradle プロジェクトの build.gradle ファイルで、ビルドに含める依存関係のリストが含まれています。Unityでは、unityLibrary モジュールは Unity プロジェクト内のすべての プラグイン に依存します。

このファイルの内容を変更するには、カスタムの Main Gradle Template を設定してください。
  
proguard-unity.txt
Unity の Java コード (unity-classes.jar プラグイン内のコード) の ProGuard 設定を格納する、Unity 固有のファイルです。設定は、Player 設定で Minification が有効になっている場合 (または Gradle ビルドファイルを手動修正して有効にした場合) に有効です。
build.gradle
Gradle プロジェクト内のすべてのモジュールに影響を与える基本の Gradle ファイルです。Gradle プロジェクトで使用するプラグインのバージョンを指定します。Android Gradle プラグインがその一例です。

このファイルの内容を変更するには、カスタムの Base Gradle Template を設定してください。
proguard-user.txt
プロジェクトの Java コードとサードパーティ製の Java プラグインの ProGuard 設定を格納する、Unity プロジェクト固有のファイルです。
ProGuard-unity.txt
同様、Gradle は、小型化が有効にされた場合にこのファイルを使用します。

このファイルを作成するには、Android Player 設定 で Custom Proguard File を有効にしてください。
gradle.properties
アプリケーションのビルド方法を設定する標準の Gradle プロジェクトファイル。このファイルの Unity 固有のプロパティは、gradle.properties ファイルのプロパティ を参照してください。このファイルに追加できる Gradle プロパティは、Gradle プロパティファイル を参照してください。

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

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

このファイルの内容に影響を変更するには、カスタムの Gradle Settings Template を設定してください。

gradle.properties ファイルのプロパティ

gradle.properties
ファイルには、Unity 固有の以下のプロパティが含まれます。

プロパティ

説明

unityStreamingAssetsStreaming Assets ディレクトリ内のアセットの名前を示します。Unity は、これらのアセットを最終的なアプリケーションに追加し、Gradle が圧縮しないよう指示します。
unityTemplateVersionUnity が使用する Gradle テンプレートファイルのバージョン。プロジェクトの Gradle テンプレートバージョンが指定されたバージョンと異なる場合、Unity はエラーをスローして Gradle ファイルの更新と空のフォルダーへのプロジェクトのビルドを通知します。
unity.projectPathUnity プロジェクトのパスです。
unity.debugSymbolLevelUnity が使用するデバッグシンボルレベル。
unity.buildToolsVersionUnity が使用するビルドツールのバージョン。
unity.minSdkVersionUnity が使用する最小 API レベル。
unity.targetSdkVersionUnity が使用するターゲット API レベル。
unity.compileSdkVersionビルドプロセス中にアプリケーションのコンパイルに使用される Android SDK のコンパイル SDK バージョン。
unity.applicationIdUnity が使用するアプリケーション ID。例えば、
com.MyCompany.MyApp
など。
unity.abiFiltersUnity が使用するアプリケーションに含まれる、カンマで区切られた Application Binary Interface (ABI) 設定。例えば、armeabi-v7a、arm64-v8a など。
unity.versionCodeアプリケーションの内部バージョン番号。アプリケーションのバージョンがどれだけ新しいかを示すために使用されます。数値が大きいほど、より新しいバージョンを表します。
unity.versionName文字列で表されるアプリケーションのバージョン番号。このバージョン番号はユーザーに表示されます。
unity.namespaceUnity が使用するアプリケーション名前空間。例えば、
com.MyCompany.MyApp
など。
unity.androidSdkPathExternal Tools の Android セクションで設定された Android Software Development Kit (SDK) のインストールフォルダーパス。メニュー: Edit > Preferences > External Tools (macOS:Unity > Settings > External Tools)。
unity.androidNdkPathExternal Tools の Android セクションで設定された Android Native Development Kit (NDK) のインストールフォルダーパス。メニュー: Edit > Preferences > External Tools (macOS:Unity > Settings > External Tools)。
unity.androidNdkVersionExternal Tools の Android セクションで設定された Android Native Development Kit (NDK) のバージョン。メニュー: Edit > Preferences > External Tools (macOS:Unity > Settings > External Tools)。
unity.jdkPathExternal Tools の Android セクションで設定された Java Development Kit (JDK) のインストールフォルダーパス。メニュー: Edit > Preferences > External Tools (macOS:Unity > Settings > External Tools)。
unity.javaCompatabilityVersionUnity で使用する Java 互換性バージョン。