Version: Unity 6.0 (6000.0)
语言 : 中文
Android 要求和兼容性
Unity and Gradle version compatibility

Gradle for Android

Gradle 是一种用于 Android 的构建系统,能够自动化许多构建流程并预防常见的构建错误。Unity 在所有 Android 构建中都使用__ Gradle__。您可以在 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.32021.3

如果您需要使用自定义的 Gradle 或 Android Gradle 插件版本,请务必了解 Gradle 和 Android Gradle 插件之间的版本兼容性。相关详细信息,请参阅更新 Gradle

Gradle 项目文件

Gradle 项目文件可配置应用程序的不同方面,例如要包含哪些模块以及如何构建这些模块。

下表列出了 Unity 项目中常见的 Gradle 文件及其用途:

Gradle 项目文件 目的
主清单文件 (Custom Main Manifest) 包含有关 Android 应用程序的重要元数据。有关主/Unity 库清单的职责,请参考 Unity 库清单
Unity 启动器清单 (Unity Launcher Manifest) 包含有关 Android 应用程序启动器的重要元数据。有关 Unity 启动器清单的职责,请参考 Unity 启动器清单
主 Gradle 文件 (Main Gradle) 包含如何将 Android 应用程序构建为库的信息。
启动器 Gradle 文件 (Launcher Gradle) 包含如何构建 Android 应用程序的指令。
基础 Gradle 文件 (Base Gradle) 包含在所有其他模板和 Gradle 项目之间共享的配置。
Gradle 属性文件 (Gradle Properties) 包含 Gradle 构建环境的配置设置,例如:Java 虚拟机 (JVM)内存配置、允许 Gradle 使用多个 JVM 进行构建的属性、选择压缩工具的属性以及在构建应用包时不压缩原生库的属性。
Gradle 设置文件 (Gradle Settings) 包含工件代码仓库的声明,用于解析应用程序所需的外部依赖关系。
Proguard 配置文件 包含代码压缩过程的配置设置。如果压缩过程中移除了某些需要保留的 Java 代码,请在此文件中添加规则以保留这些代码。

Gradle 项目结构

当您将 Unity 项目导出为 Gradle 项目时,Unity 会创建一个包含两个模块的 Gradle 项目:

  • UnityLibrary 模块:包含 Unity 运行时间和项目数据。这是一个可以集成到其他任何 Gradle 项目中的库模块。该模块可以用于将 Unity 嵌入现有的 Android 应用程序中。
  • Launcher 模块:包含应用程序的名称及其所有图标。这是一个简单的 Android 应用程序模块,用于启动 Unity。您可以将其替换为自己的应用程序。
File 描述
launcher 包含启动器模块及其所有相关内容的目录。
  src 标准的 Android Gradle 项目目录,其中包含启动器模块的源代码和资源。Unity 会将源代码和资源放在 main 子目录中。
    main 标准的 Android Gradle 项目目录,其中包含启动器模块的源代码和资源。Unity 仅支持主源集。有关源集的更多信息,请参阅创建源集
      res 标准 Android Gradle 项目目录,其中包含要包含在最终应用程序中的资源。资源包括应用程序图标、应用程序在运行时访问的文本以及应用程序样式描述。

要指定此目录中的资源,请在 Android Player Settings 中设置应用程序图标和项目名称。
      AndroidManifest.xml Unity 会将该标准的 Android Gradle 项目文件合并到最终的 Android 应用清单中。该文件包含与启动器模块相关的设置。

重要说明:如果多个清单文件为同一设置指定了不同的值,则清单合并过程会失败,需要手动修复。您可以为清单合并指定规则以自动解决冲突。有关如何执行此操作的信息,请参阅管理清单文件

有关如何影响此文件内容的信息,请参阅修改 Gradle 项目文件
  build.gradle 标准的 Gradle 项目文件 build.gradle,描述了如何构建启动器模块,并包含要在构建中包含的依赖项列表。在 Unity 中,启动器模块依赖于 unityLibrary 模块,这意味着 unityLibrary 将在构建启动器模块时一起构建,并包含在最终的构建结果中。

要修改该文件内容,请提供自定义的 Launcher Gradle 模板
  setupSymbols.gradle 特定于 Unity 的文件,包含用于将调试符号文件嵌入应用包并创建旧版 .so 扩展名符号文件的构建脚本。
shared 包含适用于项目中多个模块的通用配置信息的目录。
  keepUnitySymbols.gradle 特定于 Unity 的文件,其中包含一个脚本,用于在运行时二进制文件中存储调试元数据,用于解析堆栈跟踪。
unityLibrary 包含 unityLibrary 模块及其所有相关内容的目录。
  libs 一个通用的 Android Gradle 项目目录,用于存储 UnityLibrary 模块的 Android Archive (.aar) 和 Java Archive (.jar) 插件。

对于导出的 Unity 项目,这包含 unity-classes.jar 以及 Unity 项目中的所有.jar 和.aar 插件。

注意:此目录不包含 Android Library Projects 插件。相反,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 会将 libil2cpplibmainlibunity Unity 引擎库放在此目录中。Unity 还会将任何原生 (C++) 插件放置于此。
      jniStaticLibs 标准 Android 项目目录,其中包含 unityLibrary 模块用于创建 libil2cpp.sobaselib.a 库。
      res 标准 Android Gradle 项目目录,其中包含要包含在最终应用程序中的资源。对于导出的 Unity 项目,unityLibrary 模块的 res 目录仅包含 unityLibrary 模块使用的样式描述。
      AndroidManifest.xml Unity 会将该标准的 Android Gradle 项目文件合并到最终的 Android 应用清单中。该文件包含 unityLibrary 模块的相关设置。

要修改此文件内容,请提供自定义的自定义主清单
  symbols 如果您选择通过 Debug Symbols 构建设置生成应用程序的符号文件,Unity 将添加该目录。该目录包含包含调试元数据和 Unity 库的符号表部分的文件。您可以在 Android Studio 中设置该目录路径,以便在调试过程中解析函数名称。
  build.gradle 标准的 Gradle 项目文件 build.gradle,描述如何构建 unityLibrary 模块,并包含要在构建中包含的依赖项列表。在 Unity 中,unityLibrary 模块依赖于 Unity 项目中的所有插件

要修改此文件的内容,请提供自定义的主 Gradle 模板
  proguard-unity.txt 特定于 Unity 的文件,包含 Unity Java 代码的 ProGuard 配置(用于 unity-classes.jar 插件中的代码)。当在 Player 设置中启用 Minification(或手动修改 Gradle 构建文件启用时),该配置会生效。
build.gradle 基础 Gradle 文件,影响 Gradle 项目中的所有模块。该文件指定了要在项目中使用的插件版本。其中一个插件是 Android Gradle 插件。

要修改此文件的内容,请提供自定义的基础 Gradle 模板
proguard-user.txt 这是一个特定于 Unity 项目的文件,包含项目 Java 代码和第三方 Java 插件的 ProGuard 配置。当启用代码压缩时,ProGuard-unity.txt Gradle 使用此文件。

要创建此文件,请在 Android Player Settings 中启用 Custom Proguard File
gradle.properties 标准 Gradle 项目文件,用于配置如何构建应用程序。有关此文件中特定于 Unity 的属性的信息,请参阅 gradle.properties 文件中的属性。有关此文件可以包含的 Gradle 属性的信息,请参阅 Gradle 属性文件

要修改此文件的内容,请提供自定义 Gradle 属性模板
local.properties 标准 Android Gradle 项目文件,用于配置构建系统的环境。Unity 会在此指定 SDK 路径,因此默认情况下,导出的 Gradle 项目会使用 Unity 编辑器使用的 SDK。NDK 路径以前也在此指定,但现在 Unity 会在 launcherunityLibrary 模块的 build.gradle 文件中指定路径。

有关此文件可以包含的属性的信息,请参阅 Gradle 属性文件
settings.gradle 标准的 Android Gradle 项目文件,指定构成此 Android Gradle 项目的所有模块。在 Unity 导出的项目中,通常仅指定 launcherunityLibrary 模块。但是,如果 Unity 项目使用 Play Asset Delivery,每个资源包都是一个独立模块,因此此文件也会列出它们。该文件还指定了包含 Gradle 项目插件的位置。插件位置结合了在线仓库和项目内部的 Java 插件。

要修改此文件的内容,请提供自定义的 Gradle 设置模板

gradle.properties 文件中的属性

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 外部工具 (External Tools)菜单的 Android 配置区域设置的 Android 软件开发工具包 (SDK) 安装路径,菜单路径:编辑 (Edit) > 偏好 (Preferences) > 外部工具 (External Tools) (macOS:Unity > 设置 (Settings) > 外部工具 (External Tools))。
unity.androidNdkPath 外部工具 (External Tools) 菜单的 Android 配置区域设置的 Android 原生开发工具包 (NDK) 安装路径,菜单路径:编辑 (Edit) > 偏好 (Preferences) > 外部工具 (External Tools) (macOS:Unity > 设置 (Settings) > 外部工具 (External Tools))。
unity.androidNdkVersion External Tools 菜单的 Android 配置区域设置的 Android 原生开发工具包 (NDK) 版本号,菜单路径:编辑 (Edit) > 偏好 (Preferences) > 外部工具 (External Tools) (macOS:Unity > 设置 (Settings) > 外部工具 (External Tools))。
unity.jdkPath 外部工具 (External Tools) 菜单的 Android 配置区域设置的 Java 开发工具包 (JDK) 安装路径,菜单路径:编辑 (Edit) > 偏好 (Preferences) > 外部工具 (External Tools) (macOS:Unity > 设置 (Settings) > 外部工具 (External Tools))。
unity.javaCompatabilityVersion Unity 使用的 Java 兼容版本。
Android 要求和兼容性
Unity and Gradle version compatibility