每个 Unity 编辑器版本只能与特定版本的 Gradle 兼容。较早版本的 Unity 编辑器使用较早版本的 Gradle,而较早版本的 Gradle 与最新版 Google 移动广告不兼容。
下表显示了不同 Unity 编辑器版本所兼容的 Google 移动广告插件最高版本:
Unity 编辑器 | Google 移动广告 Unity 插件版本 |
---|---|
2023.1 或更高版本 | 最新版本 |
2021.3.41f1 - 2022.3 | 9.1.0 |
2021.3.37f1 或更低版本 | 8.5.3 |
您可以手动更新 Gradle 以使用最新的 Google 移动广告 Unity 插件,包括旧版 Unity 编辑器。如需构建 Android 应用,请选择您偏好的 Unity 编辑器版本:
2023.1 或更高版本
启用自定义 Gradle 模板
依次前往 Project Settings(项目设置)> Player(可执行游戏文件)> Android > Publishing Settings(发布设置)> Build(构建),然后启用 Custom Main Gradle Template
和 Custom Gradle Properties Template
。

将目标 API 级别设置为 34
在主菜单中,依次打开 Edit(编辑)> Project Settings(项目设置)> Player(可执行游戏文件)> Android > Other Settings(其他设置),并将 Target API Level(目标 API 级别)设置为 API Level 34(API 级别 34)或更高级别。

2021.3.41f1 - 2022.3
启用自定义 Gradle 模板
依次前往 Project Settings(项目设置)> Player(可执行游戏文件)> Android > Publishing Settings(发布设置)> Build(构建),然后启用 Custom Main Gradle Template
和 Custom Gradle Properties Template
。

将目标 API 级别设置为 34
在主菜单中,依次打开 Edit(编辑)> Project Settings(项目设置)> Player(可执行游戏文件)> Android > Other Settings(其他设置),并将 Target API Level(目标 API 级别)设置为 API Level 34(API 级别 34)或更高级别。

将 Jetifier 屏蔽名单添加到“gradleTemplate.properties”
修改 Assets/Plugins/Android/gradleTemplate.properties
,在其中添加下面这行内容:
android.jetifier.blacklist=annotation-experimental-1.4.0.aar
从“AndroidManifest.xml”中移除“minSDKVersion”
修改 Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/AndroidManifest.xml
,从 uses-sdk
节点中移除 android:minSdkVersion="21"
。您的 AndroidManifest.xml
应该如下所示:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.google.unity.ads" android:versionName="1.0" android:versionCode="1"> <uses-sdk /> <application> <uses-library android:required="false" android:name="org.apache.http.legacy"/> </application> </manifest>
2021.3.37f1 - 2019.4
前提条件
在继续操作之前,请务必做好以下准备:
- 下载并安装最新稳定版 Android Studio。
- 可选:如需详细了解如何针对 Android 进行构建,请参阅 Android build 中的 Java 版本
启用自定义 Gradle 模板
依次前往 Project Settings(项目设置)> Player(可执行游戏文件)> Android > Publishing Settings(发布设置)> Build(构建),然后启用 Custom Main Gradle Template
和 Custom Gradle Properties Template
。

将目标 API 级别设置为 34
在主菜单中,依次打开 Edit(编辑)> Project Settings(项目设置)> Player(可执行游戏文件)> Android > Other Settings(其他设置),并将 Target API Level(目标 API 级别)设置为 API Level 34(API 级别 34)或更高级别。

导出到 Android Studio
依次选择 File(文件)(在 MacOS 上为 Unity 编辑器)> Build Settings(构建设置)以修改 Android 构建设置,然后勾选“Export Project”(导出项目):

如果您收到有关 Android SDK 平台 API 级别 34 缺失的警告,请选择 Update Android SDK(更新 Android SDK)选项。
打开 Android Studio
本部分包含在 Android Studio 中执行的步骤。
更新 Gradle JDK 配置
依次选择 File(文件)(在 MacOS 上为 Android Studio)> Settings(设置)> Build(构建)> Execution(执行)> Deployment(部署)> Build Tools(构建工具)> Gradle,打开 Gradle 设置。找到 Gradle JDK 下拉菜单,并将 Gradle JDK 设置为使用 JDK 17 或更高版本。

如果您尚未安装 JDK 17,请从 Gradle JDK 菜单栏中选择 Download JDK(下载 JDK)选项,然后下载兼容的版本。我们建议使用支持 aarch64 的 JetBrains 运行时环境供应商,以便与 Android Studio 分发的运行时环境保持一致。
更新项目级 build.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 }
更新 /gradle/gradle-wrapper.properties
将 distributionUrl
设置为使用 Gradle 8.1.1 或更高版本。
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
更新 launcher/build.gradle
- 使用
launcher/AndroidManifest.xml
中package
属性的值设置namespace
属性 - 将
sourceCompatibility
和targetCompatibility
设置为 Java 17
apply plugin: 'com.android.application' dependencies { implementation project(':unityLibrary') } android { namespace "com.google.android.gms.example" compileSdkVersion 35 buildToolsVersion '35.0.0' compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } defaultConfig { minSdkVersion 28 targetSdkVersion 35 applicationId 'com.google.android.gms.example' ndk { abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' } versionCode 1 versionName '1.0' } aaptOptions { noCompress = ['.unity3d', '.ress', '.resource', '.obb', '.bundle', '.unityexp'] ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~" } lintOptions { abortOnError false } buildTypes { debug { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt') signingConfig signingConfigs.debug jniDebuggable true } release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt') signingConfig signingConfigs.debug } } packagingOptions { doNotStrip '*/armeabi-v7a/*.so' doNotStrip '*/arm64-v8a/*.so' doNotStrip '*/x86/*.so' doNotStrip '*/x86_64/*.so' jniLibs { useLegacyPackaging true } } bundle { language { enableSplit = false } density { enableSplit = false } abi { enableSplit = true } } } apply from: '../unityLibrary/GoogleMobileAdsPlugin.androidlib/packaging_options.gradle'
更新项目级 settings.gradle
设置 pluginManagement
和 dependencyResolutionManagement
部分。
pluginManagement { repositories { gradlePluginPortal() google() mavenCentral() } } include ':launcher', ':unityLibrary' include 'unityLibrary:GoogleMobileAdsPlugin.androidlib' dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS) repositories { google() mavenCentral() flatDir { dirs "${project(':unityLibrary').projectDir}/libs" } } }
更新 unityLibrary/build.gradle
- 设置
namespace
,值为"com.unity3d.player"
- 将
sourceCompatibility
和targetCompatibility
设置为JavaVersion.VERSION_17
apply plugin: 'com.android.library' dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) // Android Resolver Dependencies Start implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation 'com.google.android.gms:play-services-ads:23.6.0' implementation 'com.google.android.ump:user-messaging-platform:3.1.0' // Android Resolver Dependencies End implementation(name: 'googlemobileads-unity', ext:'aar') implementation project('GoogleMobileAdsPlugin.androidlib') } // Android Resolver Exclusions Start android { packagingOptions { exclude ('/lib/armeabi/*' + '*') exclude ('/lib/mips/*' + '*') exclude ('/lib/mips64/*' + '*') exclude ('/lib/x86/*' + '*') } } // Android Resolver Exclusions End android { namespace "com.unity3d.player" compileSdkVersion 34 buildToolsVersion '30.0.2' compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } defaultConfig { minSdkVersion 28 targetSdkVersion 34 ndk { abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86_64' } versionCode 1 versionName '1.0' consumerProguardFiles 'proguard-unity.txt' } lintOptions { abortOnError false } aaptOptions { ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~" } packagingOptions { doNotStrip '*/armeabi-v7a/*.so' doNotStrip '*/arm64-v8a/*.so' doNotStrip '*/x86_64/*.so' } } apply from: 'GoogleMobileAdsPlugin.androidlib/packaging_options.gradle' gradle.projectsEvaluated { apply from: 'GoogleMobileAdsPlugin.androidlib/validate_dependencies.gradle' }
更新 unity/Library/GoogleMobileAdsPlugin.androidlib/build.gradle
将 namespace
属性的值设置为 "com.google.unity.ads"
。
apply plugin: 'android-library' dependencies { implementation fileTree(dir: 'bin', include: ['<em>.jar']) implementation fileTree(dir: 'libs', include: ['</em>.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 34 buildToolsVersion '30.0.2' defaultConfig { targetSdkVersion 31 } lintOptions { abortOnError false } }
运行 Android 项目
在 Android Studio 中,运行 Gradle 同步,然后运行项目。