Gradle 是一种 Android 构建系统,可自动执行许多构建过程并预防许多常见的构建错误。在 Unity 中,Gradle 可减少 DEX(Dalvik 可执行文件格式)文件中的方法引用数量,这意味着可降低遇到 DEX 限制问题的可能性。
Unity 将 Gradle 用于所有 Android 构建。可以在 Unity 中构建输出包(.apk、.aab),也可以从 Unity 导出 Gradle 项目,然后通过外部工具(如 Android Studio)进行构建。
Unity 版本 | Gradle 版本 |
---|---|
2017.1, 2017.2 | 2.14 |
2017.4 到 2017.4.16(含) | 4.0.1 |
2017.(从 2017.4.17 开始) | 4.6 |
2018.1 | 4.0.1 |
2018.2 | 4.2.1 |
2018.3、2018.4 到 2018.4.3f1(含)以及 2019.1 到 2019.1.6f1(含) | 4.6 |
2018.4(从 2018.4.4f1 开始)、2019.1(从 2019.1.7f1 开始)、2019.2 和 2019.3 | 5.1.1 |
了解更多相关信息:
要构建 Gradle 项目,请执行以下步骤:
选择:
要将 Unity 项目导出为 Gradle 项目,请启用 Export Project 设置,然后选择 Export 按钮。进行此操作后,Unity 会在指定文件夹中生成 Gradle 项目,不会构建 .apk 文件。将此项目导入 Android Studio 或另一外部工具以进行进一步修改或在其中进行构建。
Unity 2019.3 和更高版本所创建的 Gradle 项目具有两个模块:
Gradle 模板描述并配置如何使用 Gradle 来构建 Android 应用程序。每个 Gradle 模板代表一个 Gradle 项目。Gradle 项目可以包括和依赖于其他 Gradle 项目。
Gradle 模板包含以下文件:
文件 | 位置 | 包含 |
---|---|---|
baseProjectTemplate.gradle | 在导出的项目中,_root/build.gradle_ 文件夹 | 所含的配置会在其他所有模板/Gradle 项目之间共享(代码仓库以及对 Android Gradle 插件的依赖关系)。 |
launcherTemplate.gradle | 在导出的项目中,_root/launcher/build.gradle_ 文件夹 | 包含有关如何构建 Android 应用程序的指令(捆绑、签名、APK 拆分)。它依赖于 unityLibrary 项目并输出 .apk 文件或应用程序捆绑包。 |
mainTemplate.gradle | 在导出的项目中,_root/unityLibrary/build.gradle_ 文件夹 | 包含关于如何将 Unity 构建为库的指令。输出 .aar 文件。在 Unity Editor 中,可以用自定义模板来覆盖 Unity 模板。请参阅本页的提供自定义 Gradle 构建模板部分以了解更多详细信息。 |
libTemplate.gradle | 因情况而异 | 如果 Unity 项目包含 Android 库项目作为插件,则会使用此文件。 |
在 Player Settings 窗口的 Publishing Settings 部分中可以提供自定义 Gradle 构建模板并选择缩小选项。
从 Unity 构建 APK 时,可以将自定义 build.gradle 文件用于 unityLibrary 模块。该文件包含模板变量中指定的特定构建指令。有关模板变量的列表,请参阅下一部分。
要将您自己的 build.gradle 文件用于 unityLibrary 模块,请执行以下操作:
随后,Unity 在项目的 Assets/Plugins/Android/ 文件夹中生成默认的 mainTemplate.gradle 文件。新文件的路径也显示在 Player Settings 中的 Custom Gradle Template 选项之下。双击 Project 视图中的 mainTemplate.gradle 文件,从而在外部文本编辑器中打开此文件。
您也可以创建自己的 settings.gradle 文件。为此,需要在项目的 Assets/Plugins/Android/ 文件夹中手动创建 settingsTemplate.gradle 文件。Unity 会使用此文件来包含您的库项目。除非您要覆盖此过程,否则您的文件需要包含以下行:
INCLUDES
Unity 将此行替换为项目的所有库的 include 指令。
IPostGenerateGradleAndroidProject 返回 unityLibrary 模块的路径。这使得一切都与 Unity 2019.3 之前的版本保持相似,无需任何进一步更改,这意味着 Unity 可以在各版本之间以一致的方式访问应用程序的清单和资源。
mainTemplate.gradle 文件可以包含以下变量:
变量: | 描述: |
---|---|
DEPS | 项目依赖项(即,项目使用的库)的列表。 |
APIVERSION | 构建针对的 API 版本(例如 25)。 |
MINSDKVERSION | 最低 API 版本(例如,25)。 |
BUILDTOOLS | 使用的 SDK 构建工具(例如 25.0.1)。 |
TARGETSDKVERSION | 目标 API 版本(例如,25)。 |
APPLICATIONID | Android 应用程序 ID(例如,com.mycompany.myapp)。 |
MINIFY_DEBUG | 允许为调试版本缩小(true 或 false)。 |
PROGUARD_DEBUG | 在调试版本中,使用 proguard 进行缩小(true 或 false)。 |
MINIFY_RELEASE | 允许为发布版本缩小(true 或 false)。 |
PROGUARD_RELEASE | 在发布版本中,使用 proguard 进行缩小(true 或 false)。 |
USER_PROGUARD | 自定义用户 proguard 文件(例如 _proguard-user.txt_)。 |
SIGN | 完成 signingConfigs 部分(如果该构建已签名)。 |
SIGNCONFIG | 设置为 signingConfig signingConfig.release (如果该构建已签名)。 |
DIR_GRADLEPROJECT | Unity 创建 Gradle 项目的目录。 |
DIR_UNITYPROJECT | Unity 项目的目录。 |
可以使用 Proguard 缩小选项来缩小和优化您的应用程序。要激活此选项,请执行以下步骤:
注意:Proguard 可能会剥离应用程序所需的重要代码,因此请谨慎使用这些选项。
要生成自定义 proguard.txt 文件,请启用 Player Settings 的 Publishing Settings 部分中的 User Proguard File 设置。这样会立即在项目的 Assets/Plugins/Android/ 文件夹中生成 proguard.txt 文件。
要了解有关 ProGuard 的更多信息,请参阅 ProGuard 手册。
如果在使用 Gradle 为应用程序进行 Android 版本构建时发生错误,Unity 将显示“错误”对话框。请选择 Troubleshoot 按钮,在系统的浏览器中打开有关 Gradle 故障排除 的 Unity 文档。