Unity添加广告与IAP后构建Android项目失败:Gradle Daemon及相关错误求助
解决Unity Android构建(添加Ads/IAP后)的系列报错
嘿,我帮你逐个拆解这些构建问题——都是添加广告和内购后Unity Android构建常见的配置或环境冲突,一步步来解决:
1. 无法加载C:\Users\bonel\.android\repositories.cfg
这个文件是Android SDK用来记录本地仓库配置的,缺失或损坏都会触发这个提示,解决超简单:
- 直接去
C:\Users\bonel\.android目录下,新建一个空的repositories.cfg文件就行,不需要写任何内容,Android构建工具会自动识别它。
2. 找不到玩家程序集UnityEngine.TestRunner.dll
这个DLL属于Unity测试框架,大概率是添加IAP/Ads时引入了测试依赖,或者项目开启了测试模块但打包时没正确处理:
- 打开Unity的Package Manager,找到
Unity Test Framework包,先移除它,再尝试构建;之后如果需要测试功能再重新安装就行。 - 检查Player Settings里的Scripting Runtime Version,建议设为
.NET 4.x Equivalent,避免版本兼容问题。 - 清理项目的
Temp和Library目录,重启Unity后再构建(记得先备份重要文件哦)。
3. Gradle Daemon不兼容,无法复用
Gradle守护进程版本不匹配导致的,直接重置就行:
- 打开命令行,切换到项目的Android构建临时目录(比如
D:\Jeux\UNITY\SythwavesJumper\Temp\StagingArea\gradle),运行gradlew --status查看当前守护进程的版本和状态。 - 接着运行
gradlew --stop停止所有守护进程,重新启动Unity构建,会自动生成兼容的新守护进程。
4. 警告:android.enableR8=false已弃用
R8是Android的代码压缩工具,旧配置已经被淘汰了,换个新写法:
- 打开项目的
Assets/Plugins/Android/gradle.properties文件(没有的话就新建一个),把android.enableR8=false替换成android.r8.mode=none,既禁用R8又符合新的Gradle规范。
5. UnityPlayerActivity.java使用已弃用API的警告
这个是Unity自带的Activity类用了Android旧API,一般不影响构建,但要消除警告的话:
- 打开Unity的Player Settings,在Android的Publishing Settings里,如果你没自定义主Activity,直接忽略就行;如果有自定义Activity,建议参考Unity最新的Android模板代码更新你的Activity,替换掉弃用的API。
- 要是想看到详细警告信息,就在
unityLibrary的build.gradle里的android -> compileOptions中加一行:options.compilerArgs.add("-Xlint:deprecation"),不过这只是看详情,还是用新模板更彻底。
6. 任务:launcher:checkDebugDuplicateClasses执行失败
这是导致构建失败的核心问题,基本是Ads和IAP引入了重复的类库:
- 打开Package Manager,确保
Google Mobile Ads和In-App Purchasing包的版本兼容,最好都更到最新稳定版,避免依赖版本冲突。 - 去
Assets/Plugins/Android目录,删掉重复的.aar或.jar文件,比如如果有多个版本的play-services-ads,只留最新的那个。 - 在Unity的Player Settings -> Android -> Publishing Settings里勾选Custom Gradle Template,打开生成的
launcher/build.gradle,添加代码排除重复依赖:
把包名换成你项目里实际的名称,这样能强制统一依赖版本。dependencies { implementation (name: 'google-mobile-ads', ext:'aar') { exclude group: 'com.google.android.gms' } implementation (name: 'unity-iap', ext:'aar') { exclude group: 'com.google.android.gms' } } - 另外,在
gradle.properties里加上android.useAndroidX=true和android.enableJetifier=true,确保所有依赖都迁移到AndroidX,避免旧Support库和AndroidX的冲突。
7. CommandInvokationFailure: Gradle构建失败
这个是前面某个错误导致的最终结果,解决完上面的问题,这个报错自然就消失了。
最后提醒下:解决完所有问题后,先清理Unity的Temp和Library目录,重启Unity再构建,能避免很多缓存带来的奇怪问题。
内容的提问来源于stack exchange,提问作者Nathan Bonelli
相关产品推荐
相关产品推荐

