Gradle 是一种 Android 构建系统,可自动执行许多构建过程并预防许多常见的构建错误。在 Unity 中,Gradle 可减少 DEX(Dalvik 可执行文件格式)文件中的方法引用数量,这意味着可降低遇到 DEX 限制问题的可能性。
Unity 将 Gradle 用于所有 Android 构建。可以在 Unity 中构建输出包(.apk、.aab),也可以从 Unity 导出 Gradle 项目,然后通过外部工具(如 Android Studio)进行构建。
Unity 版本 | Gradle 版本 |
---|---|
2020.1 | 5.6.4 |
2018.4 starting from 2018.4.4f1, 2019.1 starting from 2019.1.7f1, 2019.2, 2019.3, and 2019.4 | 5.1.1 |
2018.3、2018.4 到 2018.4.3f1(含)以及 2019.1 到 2019.1.6f1(含) | 4.6 |
2018.2 | 4.2.1 |
2018.1 | 4.0.1 |
2017.4(从 2017.4.17 开始) | 4.6 |
2017.4 到 2017.4.16(含) | 4.0.1 |
2017.1, 2017.2 | 2.14 |
了解更多相关信息:
要构建 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 编辑器中,可以用自定义模板来覆盖 Unity 模板。请参阅本页的提供自定义 Gradle 构建模板部分以了解更多详细信息。 |
libTemplate.gradle |
因情况而异 | 如果 Unity 项目包含 Android 库项目作为插件,则会使用此文件。 |
在 Player Settings 窗口的 Publishing Settings 部分中可以提供自定义 Gradle 构建模板并选择缩小选项。
从 Unity 构建 APK 时,可以将自定义 build.gradle
文件用于 unityLibrary 模块。该文件包含 template variables 中指定的特定构建指令。有关模板变量的列表,请参阅下一部分。
要将您自己的 build.gradle
文件用于 unityLibrary 模块,请执行以下操作:
Unity then generates a default mainTemplate.gradle
file in your Project’s Assets/Plugins/Android/
folder. The path to the new file also appears under the Custom Gradle Template option in the Player Settings. Double-click the mainTemplate.gradle
file in the Project view to open it in an external text editor.
!Project 视图中,unityLibrary 模块的 mainTemplate.gradle
文件
You can also create your own settings.gradle
file. To do this, you need to manually create a settingsTemplate.gradle
file in your Project’s Assets/Plugins/Android/
folder. Unity uses this file to include your library projects. Unless you want to override this process, your file needs to contain this line:
**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 文档。