使用 Unity 构建适用于 Android 11 的应用

为了支持 Android 11(API 级别 30),我们在 ARCore Extensions for AR Foundation 中添加了软件包可见性 <queries> 元素(1.19 或更高版本)。使用这些版本的 ARCore 时,<queries> 元素需要 Gradle 5.6.4 或更高版本。

在大多数情况下,使用 Android Gradle 插件 3.6.0 就已足够。如需确认 Android Gradle 插件与您正在使用的 Gradle 版本之间的兼容性,请参阅 Android Gradle 插件兼容性表

Unity Gradle 支持

以下部分列出了针对受支持的 Unity 版本的说明。

如需了解详情,请参阅以下文章:

Unity 2021 及更高版本

Unity 2021 的所有版本都支持以 Android 11 为目标平台。如需详细了解版本信息,请参阅 Unity 的 2021 年 Gradle for Android 文档。总结:

  • Unity 2021.1 至 2021.1.15f1(含)和 Gradle 5.6.4 或更高版本(以及 Gradle 插件 3.6.0 或更高版本)搭载在一起。您无需执行任何操作。

  • Unity 2021.1.16f1 及更高版本附带 Gradle 6.1.1 或更高版本(以及 Gradle 插件 4.0.1 或更高版本)。您无需执行任何操作。

Unity 2020

Unity 2020 的所有版本都支持以 Android 11 为目标平台。如需详细了解版本信息,请参阅 Unity 的 2020 年 Gradle for Android 文档。总结:

  • Unity 2020.1、2020.2 和 2020.3 以及 2020.3.14f1(含 2020.3.14f1)及以上版本附带了 Gradle 5.6.4 或更高版本(以及 Gradle 插件 3.6.0 或更高版本)。您无需执行任何操作。

  • Unity 2020.3.15f1 及更高版本附带 Gradle 6.1.1 或更高版本(以及 Gradle 插件 4.0.1 或更高版本)。您无需执行任何操作。

Unity 2019.4

  1. 在 Unity 中,打开 Unity Preferences > External Tools 并将自定义 Gradle 设置为 Gradle 5.6.4 或更高版本。如需下载,请参阅 Gradle 构建工具

    “External Tools, Android”窗格的屏幕截图,其中显示了手动指定的 Gradle 路径。

  2. 转到 Project Settings > Player > Android > Publishing Settings > Build,然后同时选择:

    1. Custom Main Gradle Template
    2. Custom Launcher Gradle Template.

    屏幕截图,显示了两个 Gradle 模板选项均处于选中状态的“Publishing Settings”(发布设置)和“Build”(构建)窗格

  3. 对生成的两个文件应用以下更改:

    • Assets/Plugins/Android/mainTemplate.gradle
    • Assets/Plugins/Android/launcherTemplate.gradle

    移除文件顶部的以下注释(如有):

    // GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN
    

    在文件顶部插入以下几行代码:

    buildscript {
        repositories {
            google()
            mavenCentral()
        }
        dependencies {
            // Must be Android Gradle Plugin 3.6.0 or later. For a list of
            // compatible Gradle versions refer to:
            // https://developer.android.com/studio/releases/gradle-plugin
            classpath 'com.android.tools.build:gradle:3.6.0'
        }
    }
    
    allprojects {
       repositories {
          google()
          mavenCentral()
          flatDir {
            dirs 'libs'
          }
       }
    }