Unity适配Android API 33编译警告:android.enableR8=false已弃用
适配Android API 33时R8警告及编译问题解决
问题背景
尝试将项目目标API升级到33时,编译出现以下警告,未修改其他配置,目标API设为32时编译正常:
Configure project :launcher
WARNING: The option setting 'android.enableR8=false' is deprecated.
It will be removed in version 5.0 of the Android Gradle plugin.
You will no longer be able to disable R8
Admob版本:7.4.0
编译日志片段:
> Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:preBuild UP-TO-DATE > Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:preReleaseBuild UP-TO-DATE > Task :unityLibrary:preBuild UP-TO-DATE > Task :launcher:preBuild UP-TO-DATE > Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:compileReleaseAidl NO-SOURCE > Task :unityLibrary:preReleaseBuild UP-TO-DATE > Task :launcher:extractProguardFiles UP-TO-DATE > Task :launcher:preReleaseBuild UP-TO-DATE > Task :unityLibrary:compileReleaseAidl NO-SOURCE > Task :unityLibrary:packageReleaseRenderscript NO-SOURCE > Task :launcher:generateReleaseBuildConfig UP-TO-DATE > Task :launcher:compileReleaseAidl NO-SOURCE > Task :launcher:compileReleaseRenderscript NO-SOURCE > Task :launcher:javaPreCompileRelease UP-TO-DATE > Task :launcher:generateReleaseResValues UP-TO-DATE > Task :launcher:generateReleaseResources UP-TO-DATE > Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:packageReleaseRenderscript NO-SOURCE > Task :unityLibrary:generateReleaseResValues UP-TO-DATE > Task :unityLibrary:compileReleaseRenderscript NO-SOURCE > Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:compileReleaseRenderscript NO-SOURCE > Task :unityLibrary:generateReleaseResources UP-TO-DATE > Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:generateReleaseResValues UP-TO-DATE > Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:generateReleaseResources UP-TO-DATE > Task :unityLibrary:packageReleaseResources UP-TO-DATE > Task :launcher:createReleaseCompatibleScreenManifests UP-TO-DATE > Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:packageReleaseResources UP-TO-DATE > Task :launcher:extractDeepLinksRelease UP-TO-DATE > Task :unityLibrary:extractDeepLinksRelease UP-TO-DATE > Task :unityLibrary:processReleaseManifest UP-TO-DATE > Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:extractDeepLinksRelease UP-TO-DATE > Task :unityLibrary:compileReleaseLibraryResources UP-TO-DATE > Task :unityLibrary:parseReleaseLocalResources UP-TO-DATE > Task :unityLibrary:generateReleaseBuildConfig UP-TO-DATE > Task :unityLibrary:javaPreCompileRelease UP-TO-DATE > Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:processReleaseManifest UP-TO-DATE > Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:parseReleaseLocalResources UP-TO-DATE > Task :launcher:mergeReleaseResources UP-TO-DATE > Task :launcher:processReleaseManifest UP-TO-DATE > Task :launcher:prepareLintJar UP-TO-DATE > Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:generateReleaseRFile UP-TO-DATE > Task :unityLibrary:prepareLintJarForPublish UP-TO-DATE > Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:compileReleaseLibraryResources UP-TO-DATE > Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:generateReleaseBuildConfig UP-TO-DATE > Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:javaPreCompileRelease UP-TO-DATE > Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:compileReleaseJavaWithJavac UP-TO-DATE > Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:bundleLibCompileToJarRelease UP-TO-DATE > Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:prepareLintJarForPublish UP-TO-DATE > Task :unityLibrary:generateReleaseRFile UP-TO-DATE > Task :launcher:processReleaseResources UP-TO-DATE > Task :launcher:checkReleaseDuplicateClasses UP-TO-DATE > Task :unityLibrary:compileReleaseJavaWithJavac UP-TO-DATE > Task :unityLibrary:bundleLibCompileToJarRelease UP-TO-DATE > Task :launcher:compileReleaseJavaWithJavac UP-TO-DATE > Task :launcher:compileReleaseSources UP-TO-DATE > Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:mergeReleaseGeneratedProguardFiles UP-TO-DATE > Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:exportReleaseConsumerProguardFiles UP-TO-DATE > Task :unityLibrary:mergeReleaseGeneratedProguardFiles UP-TO-DATE > Task :unityLibrary:exportReleaseConsumerProguardFiles UP-TO-DATE > Task :unityLibrary:processReleaseJavaRes NO-SOURCE > Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:processReleaseJavaRes NO-SOURCE > Task :unityLibrary:bundleLibResRelease NO-SOURCE > Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:bundleLibResRelease NO-SOURCE > Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:bundleLibRuntimeToJarRelease UP-TO-DATE > Task :unityLibrary:bundleLibRuntimeToJarRelease UP-TO-DATE > Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:mergeReleaseShaders UP-TO-DATE > Task :unityLibrary:mergeReleaseShaders UP-TO-DATE > Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:compileReleaseShaders NO-SOURCE > Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:generateReleaseAssets UP-TO-DATE > Task :unityLibrary:compileReleaseShaders NO-SOURCE > Task :unityLibrary:generateReleaseAssets UP-TO-DATE > Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:packageReleaseAssets UP-TO-DATE > Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:mergeReleaseJniLibFolders UP-TO-DATE > Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:mergeReleaseNativeLibs UP-TO-DATE > Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:stripReleaseDebugSymbols NO-SOURCE > Task :unityLibrary:GoogleMobileAdsPlugin.androidlib:copyReleaseJniLibsProjectOnly UP-TO-DATE > Task :unityLibrary:packageReleaseAssets > Task :unityLibrary:mergeReleaseJniLibFolders UP-TO-DATE > Task :unityLibrary:mergeReleaseNativeLibs UP-TO-DATE > Task :unityLibrary:stripReleaseDebugSymbols UP-TO-DATE > Task :unityLibrary:copyReleaseJniLibsProjectOnly UP-TO-DATE > Task :launcher:lintVitalRelease > Task :launcher:mergeReleaseGeneratedProguardFiles UP-TO-DATE > Task :launcher:processReleaseJavaRes NO-SOURCE > Task :launcher:mergeReleaseJavaResource UP-TO-DATE
解决方法
1. 移除R8禁用配置,启用R8并添加适配混淆规则
Android Gradle插件5.0及以上版本不再支持禁用R8,必须使用R8进行代码混淆和压缩:
- 打开项目根目录的
gradle.properties文件,删除或注释掉android.enableR8=false这一行 - 在
proguard-rules.pro中添加Admob对应的R8混淆规则(适配7.4.0版本):
-keep class com.google.android.gms.ads.** { *; } -keep class com.google.android.gms.common.** { *; } -keep public class com.google.android.gms.ads.AdActivity { public *; }
2. 升级Admob到兼容API 33的新版本
Admob 7.4.0版本过于老旧,未适配API 33及最新R8规则,建议升级到最新稳定版:
- 在Module级别的
build.gradle中更新依赖:
implementation 'com.google.android.gms:play-services-ads:22.6.0'
新版本自带适配R8的规则,无需手动添加额外混淆配置,同时能更好支持API 33的权限和行为变更。
3. 匹配Android Gradle插件与API 33的版本
API 33要求Android Gradle插件(AGP)版本至少为7.0,若当前AGP版本过低需升级:
- 打开项目根目录的
build.gradle文件,更新classpath:
buildscript { dependencies { classpath 'com.android.tools.build:gradle:7.4.2' } }
内容的提问来源于stack exchange,提问作者Imran Iqbal
相关产品推荐
相关产品推荐

