Unity 编辑器的版本锁定到特定版本的 Gradle。较低版本的 Unity 编辑器使用的是较低版本的 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 或更高版本
前提条件
在继续之前,请确保您已准备好以下内容:
- 可选:如需详细了解如何针对 Android 构建应用,请参阅 Android build 中的 Java 版本
启用自定义 Gradle 模板
依次前往 Project Settings > Player > Android > Publishing Settings > Build,然后启用 Custom Main Gradle Template
和 Custom Gradle Properties Template
。
![启用自定义 Gradle 模板](https://developers.google.cn/static/admob/images/unity_projectsettings_gradle.png?hl=zh-cn)
设置目标 API 级别 34
从主菜单中依次打开 Edit > Project Settings > Player > Android > Other Settings,然后将 Target API Level 设置为 API Level 34 或更高级别。
![设置目标 API 级别](https://developers.google.cn/static/admob/images/unity_projectsettings_apilevel.png?hl=zh-cn)
运行 Android 项目
在 Android Studio 中,运行 Gradle 同步,然后运行项目。
2021.3.4f1 - 2022.3
前提条件
在继续之前,请确保您已准备好以下内容:
- 下载并安装最新的稳定版 Android Studio。
- 可选:如需详细了解如何针对 Android 构建,请参阅 Android build 中的 Java 版本
启用自定义 Gradle 模板
依次前往 Project Settings > Player > Android > Publishing Settings > Build,然后启用 Custom Main Gradle Template
和 Custom Gradle Properties Template
。
![启用自定义 Gradle 模板](https://developers.google.cn/static/admob/images/unity_projectsettings_gradle.png?hl=zh-cn)
设置目标 API 级别 34
从主菜单中依次打开 Edit > Project Settings > Player > Android > Other Settings,然后将 Target API Level 设置为 API Level 34 或更高级别。
![设置目标 API 级别](https://developers.google.cn/static/admob/images/unity_projectsettings_apilevel.png?hl=zh-cn)
导出到 Android Studio
修改 Android 构建设置:依次选择 File(或在 macOS 上,依次选择 Unity Editor)> Build Settings,然后选中 Export Project:
![导出项目](https://developers.google.cn/static/admob/images/unity_projectsettings_export.png?hl=zh-cn)
打开 Android Studio
本部分包含在 Android Studio 中执行的步骤。
更新 Gradle JDK 配置
依次选择 File(或在 macOS 上选择 Android Studio)> Settings > Build > Execution > Deployment > Build Tools > Gradle,打开 Gradle 设置。找到 Gradle JDK 下拉菜单,然后将 Gradle JDK 设置为使用 JDK 17 或更高版本。
![更新 Gradle JDK 配置](https://developers.google.cn/static/admob/images/unity_projectsettings_jdk.png?hl=zh-cn)
如果您尚未安装 JDK 17,请从 Gradle JDK 菜单栏中选择 Download 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
运行 Android 项目
在 Android Studio 中,运行 Gradle 同步,然后运行项目。
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
。
![启用自定义 Gradle 模板](https://developers.google.cn/static/admob/images/unity_projectsettings_gradle.png?hl=zh-cn)
设置目标 API 级别 34
从主菜单中依次打开 Edit > Project Settings > Player > Android > Other Settings,然后将 Target API Level 设置为 API Level 34 或更高级别。
![设置目标 API 级别](https://developers.google.cn/static/admob/images/unity_projectsettings_apilevel.png?hl=zh-cn)
导出到 Android Studio
修改 Android 构建设置:依次选择 File(或在 macOS 上,依次选择 Unity Editor)> Build Settings,然后选中 Export Project:
![导出项目](https://developers.google.cn/static/admob/images/unity_projectsettings_export.png?hl=zh-cn)
如果您收到 Android SDK 平台 API 级别 34 缺失的警告,请选择 “Update 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 或更高版本。
![更新 Gradle JDK 配置](https://developers.google.cn/static/admob/images/unity_projectsettings_jdk.png?hl=zh-cn)
如果您尚未安装 JDK 17,请从 Gradle JDK 菜单栏中选择 Download 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: ['.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 34
buildToolsVersion '30.0.2'
defaultConfig {
targetSdkVersion 31
}
lintOptions {
abortOnError false
}
}
运行 Android 项目
在 Android Studio 中,运行 Gradle 同步,然后运行项目。