Unity 编辑器 Android 兼容性

Unity 编辑器的版本锁定为特定版本的 Gradle,这可能会与较新 Android 软件包(例如 Google 移动广告)所需的依赖项冲突。以下指南介绍了如何在较低版本的 Unity 编辑器上生成 Android build。

下表根据您的 Unity 编辑器,推荐了可兼容的最高 Google 移动广告插件版本。

Unity 编辑器 推荐的 Google 移动广告 Unity 插件版本
2023.1 或更高版本 最新
2021.3.41f1 - 2022.3 9.1.0
2021.3.37f1 或更低版本 8.5.3

前提条件

更新了 2022.3 及更低版本的 build 设置

在将项目导出到 Android Studio 之前,Unity 2022.3 及更低版本需要更改 build 设置。

生成 baseProjectTemplate.gradle

  1. 启用自定义 Gradle 模板。依次前往 Project Settings > Player > Android > Publishing Settings > Build,然后选择 Custom Base Gradle Template。这会生成 Plugins/Android/baseProjectTemplate.gradle 文件。

  2. 修改 Plugins/Android/baseProjectTemplate.gradle 文件以使用 Gradle 工具版本 8.1.1 或更高版本。

    plugins {
        id 'com.android.application' version '8.1.1' apply false
        id 'com.android.library' version '8.1.1' apply false
    }
    
    task clean(type: Delete) {
        delete rootProject.buildDir
    }
    

Unity 2021.3.37f1 及更低版本的其他变更

若要将 Unity 2021.3.37f1 及更低版本的兼容性升级到 Gradle 8.1.1,需要进行额外的更改。请完成以下步骤:

生成 launcherTemplate.gradle

  1. 依次前往 Project Settings > Player > Android > Publishing Settings > Build,然后选择 Launcher Gradle Template。这会生成 Plugins/Android/launcherTemplate.gradle 文件。

  2. 修改 Plugins/Android/launcherTemplate.gradle 以添加命名空间属性。命名空间属性值应与启动器模块的 AndroidManifest.xml 文件中找到的软件包属性匹配。

    android {
        // TODO: Replace with your app's package name.
        namespace 'com.google.android.gms.example'
    }
    

生成 mainTemplate.gradle

  1. 依次前往 Project Settings > Player > Android > Publishing Settings > Build,然后选择 Main Gradle Template。这会生成 Plugins/Android/mainTemplate.gradle 文件。

.

  1. 修改 Plugins/Android/mainTemplate.gradle 以添加值为 com.unity3d.player 的命名空间属性。

    android {
        namespace 'com.unity3d.player'
    }
    

导出到 Android Studio

  1. 修改 Android build 设置以导出 Unity 项目。

  2. 如需导出到 Android Studio,请修改 Android build 设置。依次选择 File(或在 macOS 上,依次选择 Unity Editor> Build Settings,然后选中 Export Project

  3. 按“Build Settings”对话框底部的 Export 按钮。 Unity 会在所选位置生成一个 Android 项目。

  4. 在 Android Studio 中打开导出的项目。

更新 Gradle JDK 配置以使用 JDK 17

  1. 使用 Android Studio,依次选择 File(或在 macOS 上,依次选择 Android Studio> Settings > Build, Execution, Deployment > Build Tools > Gradle,打开 Gradle 设置。
  2. 找到 Gradle JDK 下拉菜单。修改 Gradle JDK 以使用 JDK 17

    如果您尚未安装 JDK 17,请从 Gradle JDK 下拉菜单中选择 Download JDK 选项,然后下载兼容的版本。我们建议使用支持 arch64JetBrains 运行时供应商,以便与 Android Studio 分发的内容保持一致。

更新 Gradle 封装容器文件

修改 gradle/wrapper/gradle-wrapper.properties 中的 distributionUrl 参数,以使用 Gradle 8.0.1 或更高版本。

   distributionBase=GRADLE_USER_HOME
   distributionPath=wrapper/dists
   zipStoreBase=GRADLE_USER_HOME
   zipStorePath=wrapper/dists
   distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.1-bin.zip

适用于 Unity 2021.3.37f1 及更低版本的其他 Android Studio 变更

若要将兼容性升级到 Gradle 8.1.1,Unity 2021.3.37f1 及更低版本需要进行额外的更改。请完成以下步骤:

  1. 修改 gradle.properties 并移除 android.enableR8=false 属性。

  2. 修改 unityLibrary/GoogleMobileAdsPlugin.androidlib/build.gradle,并添加值为 "com.google.unity.ads" 的命名空间属性:

    apply plugin: 'android-library'
    
    dependencies {
        implementation fileTree(dir: 'bin', include: ['*.jar'])
        implementation fileTree(dir: 'libs', include: ['*.jar'])
    }
    
    android {
        namespace "com.google.unity.ads"
        sourceSets {
            main {
                manifest.srcFile 'AndroidManifest.xml'
                //java.srcDirs = ['src']
                res.srcDirs = ['res']
                assets.srcDirs = ['assets']
                jniLibs.srcDirs = ['libs']
            }
        }
    
        compileSdkVersion 35
        buildToolsVersion '30.0.3'
        defaultConfig {
            targetSdkVersion 31
        }
    
        lintOptions {
            abortOnError false
        }
    }
    

运行 Android 项目

完成这些步骤后,Unity 应用就已准备就绪。在 Android Studio 中,运行 Gradle 同步,然后运行项目