Unity3d接入Firebase Cloud后Gradle构建报错:无法确定compileDebugJavaWithJavac依赖
问题解决方案
错误根因
你遇到的Cannot set the value of read-only property 'class' for object of type org.gradle.api.internal.artifacts.DefaultExcludeRule报错,本质是Firebase Cloud新版本依赖的Gradle排除规则语法,和Unity 2020.3.19f1自带的Gradle 6.1.1版本不兼容,和Android许可证没有关联,因此执行flutter doctor --android-licenses无法解决问题。
可行解决方案
- 方案1:降级Firebase Unity SDK版本
回退使用Firebase Unity SDK 8.10.0及更早版本,该版本区间的依赖规则兼容Gradle 6.1.1,无需额外修改配置即可正常构建。 - 方案2:替换Unity使用的Gradle版本
- 下载Gradle 6.7.1到7.0.2之间的正式版本(过高版本Unity 2020.3分支不支持)
- 打开Unity菜单
编辑>首选项>外部工具,找到Android分类下的Gradle配置项,勾选自定义并选择你下载解压后的Gradle根目录路径 - 重启Unity后重新执行构建即可
- 方案3:修改Gradle模板的排除规则写法
若不想变动SDK和Gradle版本,可手动调整依赖配置:- 打开Unity播放器设置,进入
发布设置>构建板块,勾选自定义主Gradle模板 - 打开项目生成的
mainTemplate.gradle文件,找到Firebase相关依赖下的exclude规则,将所有class: "xxx"的写法,替换为group: "xxx", module: "xxx"的拆分式写法,规避对只读class属性的直接赋值操作。
- 打开Unity播放器设置,进入
注:日志中出现的
android.enableR8=false废弃警告不会导致本次构建失败,仅在后续升级Android Gradle插件到5.0+版本时需要调整配置开启R8即可。
内容的提问来源于stack exchange,提问作者Lenvanthis
相关产品推荐
相关产品推荐

