Gradle 是一个构建系统,它自动化了许多构建过程并防止了许多常见的构建错误。Unity 使用 Gradle 进行所有 Android 构建。您可以在 Unity 中构建输出包(.apk、.aab),也可以从 Unity 中导出 Gradle 项目,然后使用外部工具(如 Android Studio)进行构建。
有关更多信息,请参阅
下表显示了 Gradle 版本与 Unity 版本之间的兼容性。
Unity 版本 | Gradle 版本 | Android Gradle 插件版本 |
---|---|---|
6000.0 | 8.4 | 8.3.0 |
有关其他 Unity 版本的 Gradle 和 Android Gradle 插件版本,请参阅:2022.3 和 2021.3
如果要使用自定义 Gradle 或 Android Gradle 插件版本,则必须了解 Gradle 和 Android Gradle 插件之间的版本兼容性。有关此方面的更多信息,请参阅 更新 Gradle。
Gradle 项目文件配置应用程序的不同方面,例如要包含哪些模块以及如何构建它们。
下表列出了 Unity 项目中存在的 Gradle 项目文件,并描述了每个文件的用途。
Gradle 项目文件 | 用途 |
---|---|
主清单 | 此文件包含有关 Android 应用程序的重要元数据。有关主/Unity 库清单职责的更多信息,请参阅 Unity 库清单。 |
Unity 启动器清单 | 此文件包含有关 Android 应用程序启动器的重要元数据。有关 Unity 启动器清单职责的更多信息,请参阅 Unity 启动器清单。 |
主 Gradle | 此文件包含有关如何将 Android 应用程序构建为库的信息。 |
启动器 Gradle | 此文件包含有关如何构建 Android 应用程序的说明。 |
基础 Gradle | 此文件包含所有其他模板和 Gradle 项目之间共享的配置。 |
Gradle 属性 | 此文件包含 Gradle 构建环境的配置设置。这包括:- JVM(Java 虚拟机)内存配置。- 允许 Gradle 使用多个 JVM 进行构建的属性。- 用于选择用于缩减的工具的属性。- 构建应用捆绑包时不压缩原生库的属性。 |
Gradle 设置 | 此文件包含工件存储库的声明,以解析应用程序所需的外部依赖项。 |
Proguard | 此文件包含缩减过程的配置设置。如果缩减删除了应保留的某些 Java 代码,则应在该文件中添加规则以保留该代码。 |
如果将 Unity 项目导出为 Gradle 项目,Unity 将创建一个包含两个模块的 Gradle 项目
文件 | 描述 |
---|---|
启动器 |
一个包含 启动器模块及其所有相关内容的目录。 |
src
|
一个标准的 Android Gradle 项目目录,包含启动器模块的源代码和资源。Unity 将源代码和资源放置在 main 子目录中。 |
main
|
一个标准的 Android Gradle 项目目录,包含启动器模块的源代码和资源。Unity 仅支持主源集。有关源集的更多信息,请参阅 创建源集。 |
res
|
一个标准的 Android Gradle 项目目录,包含要包含在最终应用程序中的资源。这些资源是应用程序图标、应用程序在运行时访问的文本以及应用程序样式描述。 要指定此目录中的资源,请在 Android 播放器设置 中设置应用程序图标和项目名称。 |
AndroidManifest.xml
|
一个标准的 Android Gradle 项目文件,Unity 将其合并到最终的 Android 应用清单 中。它包含特定于启动器模块的设置。 重要:如果多个清单文件为同一设置指定不同的值,则清单合并过程将失败,您必须手动修复它。您可以指定清单合并器用于自动决定如何解决合并冲突的规则。有关如何执行此操作的信息,请参阅 管理清单文件。 有关如何影响此文件内容的信息,请参阅 修改 Gradle 项目文件。 |
build.gradle
|
一个标准的 Gradle 项目 build.gradle 文件,描述了如何构建启动器模块,并包含要在构建中包含的依赖项列表。在 Unity 中,启动器模块依赖于 unityLibrary 模块,这意味着在构建启动器模块时,unityLibrary 会被构建并包含在最终结果中。 要影响此文件的内容,请提供自定义的 启动器 Gradle 模板。 |
setupSymbols.gradle
|
一个 Unity 特定的文件,包含将调试符号文件嵌入应用捆绑包并使用传统 .so 扩展名创建符号文件的构建脚本。 |
shared |
一个包含适用于项目中多个模块的通用配置信息的目录。 |
keepUnitySymbols.gradle
|
一个 Unity 特定的文件,包含一个脚本,用于将调试元数据存储在运行时二进制文件中,以解析堆栈跟踪。 |
unityLibrary |
一个包含 unityLibrary 模块及其所有相关内容的目录。 |
libs
|
一个常见的 Android Gradle 项目目录,用于存储 Android 存档 (.aar) 和 Java 存档 (.jar) 插件,用于 unityLibrary 模块。 对于导出的 Unity 项目,这包含 unity-classes.jar 以及 Unity 项目中的所有 .jar 和 .aar 插件。注意:此目录不包含 Android 库项目 插件。相反,Unity 会将这些插件复制到 Gradle 项目中作为单独的模块。 |
unity-classes.jar
|
一个 Unity 特定的 Java 插件,包含 Unity 引擎使用的 Java 代码。 |
src
|
一个标准的 Android Gradle 项目目录,包含 unityLibrary 模块的源代码和资源。Unity 将源代码和资源放置在 main 子目录中。 |
main
|
一个标准的 Android Gradle 项目目录,包含 unityLibrary 模块的源代码和资源。Unity 仅支持主源集。有关源集的更多信息,请参阅 创建源集。 |
assets
|
一个标准的 Android Gradle 目录,包含项目资源。Unity 将 Unity 项目的资源放置在 bin 子目录中。 |
bin
|
一个标准的 Android Gradle 项目目录,Unity 将所有 Unity 项目的资源添加到其中。 |
java
|
一个标准的 Android Gradle 项目目录,包含 unityLibrary 模块的未编译 Java 源文件。Unity 仅使用此目录来存储 UnityPlayerActivity 源文件。有关如何扩展 UnityPlayerActivity 的信息,请参阅 扩展 UnityPlayerActivity Java 代码。 |
jniLibs
|
一个标准的 Android Gradle 项目目录,包含 unityLibrary 模块使用的原生代码库。Unity 将 libil2cpp 、libmain 和 libunity Unity 引擎库放置在此目录中。Unity 还将所有 原生(C++)插件 放置在此目录中。 |
jniStaticLibs
|
一个标准的 Android 项目目录,包含 unityLibrary 模块用来创建 libil2cpp.so 的 baselib.a 库。 |
res
|
一个标准的 Android Gradle 项目目录,包含要包含在最终应用程序中的资源。对于导出的 Unity 项目,unityLibrary 模块的 res 目录仅包含 unityLibrary 模块使用的样式描述。 |
AndroidManifest.xml
|
一个标准的 Android Gradle 项目文件,Unity 将其合并到最终的 Android 应用清单 中。它包含特定于 unityLibrary 模块的设置。 要影响此文件的内容,请提供自定义的 自定义主清单。 |
symbols
|
一个目录,如果选择通过 调试符号 构建设置为应用程序生成符号文件,Unity 将添加该目录。此目录包含包含调试元数据和 Unity 库符号表部分的文件。您可以设置 Android Studio 中的目录路径,以便在调试期间解析函数名称。 |
build.gradle
|
一个标准的 Gradle 项目 build.gradle 文件,描述了如何构建 unityLibrary 模块,并包含要在构建中包含的依赖项列表。在 Unity 中,unityLibrary 模块依赖于 Unity 项目中的所有 插件在 Unity 之外创建的一组代码,在 Unity 中创建功能。在 Unity 中可以使用两种类型的插件:托管插件(使用 Visual Studio 等工具创建的托管 .NET 程序集)和原生插件(特定于平台的原生代码库)。更多信息 请参阅 词汇表。 要影响此文件的内容,请提供自定义的 主 Gradle 模板。 |
proguard-unity.txt
|
一个 Unity 特定的文件,包含 Unity Java 代码(unity-classes.jar 插件中的代码)的 ProGuard 配置。当在 播放器设置设置,使您可以设置 Unity 构建的最终游戏的各种特定于播放器的选项。 更多信息 请参阅 词汇表 中启用缩减(或通过手动修改 gradle 构建文件启用)时,配置将生效。 |
build.gradle |
影响 Gradle 项目中所有模块的基础 Gradle 文件。它指定了在此 Gradle 项目中要使用的插件版本。其中一个插件是 Android Gradle 插件。 要影响此文件的内容,请提供一个自定义的 Base Gradle 模板。 |
proguard-user.txt |
这是一个 Unity 项目特定的文件,它包含项目 Java 代码和第三方 Java 插件的 ProGuard 配置。与 ProGuard-unity.txt 一样,如果您启用缩小,Gradle 会使用它。要创建此文件,请在 Android 播放器设置 中启用 自定义 Proguard 文件。 |
gradle.properties |
一个标准的 Gradle 项目文件,用于配置如何构建应用程序。有关此文件中 Unity 特定属性的信息,请参阅 gradle.properties 文件中的属性。有关此文件可以包含的 Gradle 属性的信息,请参阅 Gradle 属性文件。 要影响此文件的内容,请提供一个自定义的 Gradle 属性模板。 |
local.properties |
一个标准的 Android Gradle 项目文件,用于配置构建系统的环境。Unity 在这里指定了 SDK 路径,因此默认情况下,导出的 Gradle 项目使用与 Unity 编辑器相同的 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 设置模板。 |
gradle.properties
文件包含以下特定于 Unity 的属性
属性 | 描述 |
---|---|
unityStreamingAssets | 指示 Streaming Assets 目录中资源的名称。Unity 指定这些资源应该在最终应用程序中,并且 Gradle 不应该压缩它们。 |
unityTemplateVersion | Unity 使用的 Gradle 模板文件版本。如果项目的 Gradle 模板版本与指定的版本不同,Unity 会抛出一个错误,通知您更新 Gradle 文件并在空文件夹中构建项目。 |
unity.projectPath | Unity 项目的路径。 |
unity.debugSymbolLevel | Unity 使用的调试符号级别。 |
unity.buildToolsVersion | Unity 使用的构建工具版本。 |
unity.minSdkVersion | Unity 使用的最低 API 级别。 |
unity.targetSdkVersion | Unity 使用的目标 API 级别。 |
unity.compileSdkVersion | 构建过程中用于编译应用程序的 Android SDK 的编译 SDK 版本。 |
unity.applicationId | Unity 使用的应用程序 ID。例如,com.MyCompany.MyApp 。 |
unity.abiFilters | Unity 使用的应用程序中包含的应用程序二进制接口 (ABI) 配置,以逗号分隔。例如,armeabi-v7a、arm64-v8a。 |
unity.versionCode | 应用程序的内部版本号。它用于指示应用程序版本有多新,其中较高的数字表示较新的版本。 |
unity.versionName | 用字符串表示的应用程序版本号。此版本号对用户可见。 |
unity.namespace | Unity 使用的应用程序命名空间。例如,com.MyCompany.MyApp 。 |
unity.androidSdkPath | 在 外部工具 的 Android 部分中设置的 Android 软件开发工具包 (SDK) 安装文件夹路径,菜单:编辑 > 首选项 > 外部工具(macOS:Unity > 设置 > 外部工具)。 |
unity.androidNdkPath | 在 外部工具 的 Android 部分中设置的 Android 原生开发工具包 (NDK) 安装文件夹路径,菜单:编辑 > 首选项 > 外部工具(macOS:Unity > 设置 > 外部工具)。 |
unity.androidNdkVersion | 在 外部工具 的 Android 部分中设置的 Android 原生开发工具包 (NDK) 版本,菜单:编辑 > 首选项 > 外部工具(macOS:Unity > 设置 > 外部工具)。 |
unity.jdkPath | 在 外部工具 的 Android 部分中设置的 Java 开发工具包 (JDK) 安装文件夹路径,菜单:编辑 > 首选项 > 外部工具(macOS:Unity > 设置 > 外部工具)。 |
unity.javaCompatabilityVersion | Unity 使用的 Java 兼容性版本。 |