Unity集成广告打包Android遇CommandInvokationFailure: Gradle构建失败求助
解决Unity集成广告后Android打包Gradle构建失败问题
嘿,我来帮你搞定这个问题!你遇到的情况很典型——集成广告功能后打包Android就触发CommandInvokationFailure: Gradle build failed,但开广告离线模式就正常,本质是广告SDK的在线依赖在Gradle构建时无法正常拉取,离线模式下Unity跳过了在线资源同步,所以能成功打包。下面是几个针对性的解决办法:
1. 排查网络代理或网络环境
很多时候这类构建失败是网络问题导致Gradle下载不了广告相关的依赖包:
- 先检查Unity的代理设置:打开
Edit > Preferences > External Tools,看看Gradle部分是否配置了正确的代理(如果你的网络需要代理的话),不需要的话就清空代理设置 - 也可以直接修改项目生成的
gradle.properties文件,添加或调整代理配置(不需要代理就删掉这些内容):systemProp.http.proxyHost=你的代理地址 systemProp.http.proxyPort=代理端口 systemProp.https.proxyHost=你的代理地址 systemProp.https.proxyPort=代理端口
2. 切换到本地Gradle分发版
Unity默认的内嵌Gradle有时候会因为网络或版本兼容问题出状况,换成本地完整版更稳定:
- 下载对应版本的Gradle(你这里用的是4.0.1,下载该版本的完整压缩包即可)
- 在Unity里开启自定义Gradle模板:
Edit > Project Settings > Player > Android > Publishing Settings > Build,勾选Use Custom Gradle Template - 打开生成的
mainTemplate.gradle文件,修改distributionUrl指向你本地的Gradle包路径,比如:distributionUrl=file\:///D:/gradle-4.0.1-all.zip
3. 检查广告SDK的依赖配置
有时候广告插件的依赖声明有误,导致Gradle无法解析:
- 打开Unity的广告插件配置界面,确认所有广告模块都已正确导入,没有缺失的资源
- 如果是手动添加的依赖,检查
mainTemplate.gradle的dependencies块,确保依赖地址正确,比如Google AdMob的依赖应该是类似这样(版本号要和你的Unity版本兼容):implementation 'com.google.android.gms:play-services-ads:20.6.0'
4. 清理Gradle缓存后重新构建
Gradle缓存损坏也可能引发构建失败:
- 找到Unity项目目录下的
Library\Bee\Android\Prj\IL2CPP\Gradle,删除里面的.gradle和build文件夹 - 回到Unity,点击
File > Build Settings > Clean Build,之后再尝试重新打包
关键提示:查看完整错误日志
你现在只看到了错误开头,建议展开Unity Console里的CommandInvokationFailure错误详情,里面有Gradle输出的完整报错信息——比如是某个依赖找不到、权限问题还是其他原因,根据具体提示来解决会更高效。
内容的提问来源于stack exchange,提问作者Ciprian Simon




