Unity安卓构建失败:配置解析错误及D8栈映射表异常
Unity Android构建问题:警告与错误修复指南
环境版本
- Unity: 2022.3.39f1
- Admob: v9.2.0
- Firebase: 12.1.0
构建警告处理
1. 项目配置警告
android.enableDexingArtifactTransform=false已弃用:直接删除gradle.properties里的这个配置,默认值true会自动生效,该配置将在AGP 8.0版本被移除。- AGP 7.4.2与compileSdk=34不兼容:要么把AGP升级到8.0+版本(适配compileSdk=34),要么在gradle.properties里添加
android.suppressUnsupportedCompileSdk=34屏蔽警告。
2. 清单文件警告
- GoogleMobileAdsPlugin.androidlib的namespace配置过时:打开该模块的build.gradle文件,添加
namespace "com.google.unity.ads",同时删掉AndroidManifest.xml里package属性的命名空间设置。 - 命名空间重复:
:googlemobileads-unity:和:unityLibrary:GoogleMobileAdsPlugin.androidlib:共用com.google.unity.ads命名空间,将其中一方的namespace改为唯一值,比如com.google.unity.ads.plugin。
构建失败核心问题修复
错误信息
- 执行
Task :launcher:dexBuilderRelease时触发D8栈映射表错误:jetified-analytics-7.0.0-runtime.jar中指令131、53处,[Initialized(java.util.regex.Pattern)]无法赋值给[int],栈顶类型不匹配;最终报错Could not resolve all files for configuration ':launcher:detachedConfiguration4'。
修复步骤
- 解决依赖版本冲突:该问题由Firebase Analytics与Admob依赖不兼容导致,要么将Firebase版本升级到与Admob v9.2.0兼容的版本(官方推荐Firebase 12.0.0+),要么降级Admob版本匹配当前Firebase。
- 排除冲突依赖:在Unity主gradle模板中,为Admob或Firebase依赖排除冲突的analytics模块:
implementation('com.google.android.gms:play-services-ads:22.6.0') { exclude group: 'com.google.firebase', module: 'firebase-analytics' } - 清理缓存后重建:删除Unity项目的
Library、Temp文件夹,以及Android构建目录下的.gradle、build文件夹,重新执行构建。 - 确保Jetifier生效:在gradle.properties中确认
android.enableJetifier=true,保证所有第三方依赖被正确转译。
内容的提问来源于stack exchange,提问作者Imran Iqbal
相关产品推荐
相关产品推荐

