版本:Unity 6 (6000.0)
语言:英语
Android 要求和兼容性
Android 应用清单

Android 的 Gradle

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.32021.3

如果要使用自定义 Gradle 或 Android Gradle 插件版本,则必须了解 Gradle 和 Android Gradle 插件之间的版本兼容性。有关此方面的更多信息,请参阅 更新 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 代码,则应在该文件中添加规则以保留该代码。

Gradle 项目结构

如果将 Unity 项目导出为 Gradle 项目,Unity 将创建一个包含两个模块的 Gradle 项目

  • UnityLibrary 模块:包含 Unity 运行时和项目数据。此模块是一个库,可以将其集成到任何其他 Gradle 项目中。您可以使用它将 Unity 嵌入到现有 Android 应用程序中。
  • 启动器模块:包含应用程序的名称和所有图标。这是一个简单的 Android 应用程序模块,用于启动 Unity。您可以用自己的应用程序替换它。
文件 描述
启动器 一个包含 启动器模块及其所有相关内容的目录。
  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 将 libil2cpplibmainlibunity Unity 引擎库放置在此目录中。Unity 还将所有 原生(C++)插件 放置在此目录中。
      jniStaticLibs 一个标准的 Android 项目目录,包含 unityLibrary 模块用来创建 libil2cpp.sobaselib.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 在 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 外部工具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 兼容性版本。
Android 要求和兼容性
Android 应用清单