Unity打包Android时Gradle构建失败求助
解决Unity打包Android时Gradle构建AssertionError(无法识别MODULE属性)的方案
核心原因
这个错误是因为JDK 8早期版本不支持Java 9+引入的MODULE属性,你的项目中可能存在依赖库(第三方SDK、Unity自带模块等)编译时使用了更高版本JDK,生成的字节码包含MODULE属性,导致JDK 8u152的编译器无法识别,触发AssertionError并终止compileReleaseJavaWithJavac任务。
具体解决步骤
1. 升级JDK到兼容的8系列版本
Unity 2019.3.x官方推荐使用JDK 1.8u202及以上版本(含AdoptOpenJDK 8u202+),这些版本修复了对MODULE属性的兼容问题:
- 卸载当前的jdk1.8.0_152,下载并安装AdoptOpenJDK 8u202或更高的8系列版本
- 在Unity编辑器中打开
Edit > Preferences > External Tools,将JDK路径指向新安装的JDK目录
2. 调整Gradle构建配置(升级JDK后仍有问题时使用)
在Unity的Player Settings > Publishing Settings > Build中勾选Custom Gradle Template,找到生成的launcher/build.gradle文件,添加以下配置让编译器忽略无法识别的属性:
android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 // 新增配置:忽略无法识别的属性符号 javaCompilerOptions { option "-XDignore.symbol.file" } } }
3. 排查第三方依赖库
如果项目使用了第三方SDK,确认其编译版本是否过高:
- 替换为明确兼容JDK 8的SDK版本
- 若SDK是aar包,可解压后用
javap -v命令检查字节码,确认是否包含MODULE属性,如有则联系SDK提供者获取兼容版本
4. 降级Gradle版本(备选方案)
若以上方法无效,可尝试将Gradle版本降级到Unity 2019.3.x适配更稳定的gradle-5.4.1:
- 在Unity的
External Tools中切换Gradle版本,或手动替换项目中的Gradle包
内容的提问来源于stack exchange,提问作者Live Print
相关产品推荐
相关产品推荐

