Unity导出Android项目构建提示无错误但实际失败::unityLibrary:compileDebugJavaWithJavac任务执行异常
解决Unity Android构建失败(:unityLibrary:compileDebugJavaWithJavac任务错误)
根据你提供的构建日志,核心问题是任务执行顺序冲突加上Gradle版本兼容性问题,以下是分步解决方法:
1. 对齐Gradle与Android Gradle插件(AGP)版本
你的项目当前使用Gradle 7.0.1,但存在与Gradle 8.0不兼容的弃用功能,首先需要确保AGP和Gradle版本匹配:
- 打开项目根目录的
build.gradle(项目级),找到dependencies块中的com.android.tools.build:gradle,将其版本调整为与Gradle 7.0.1兼容的稳定版,比如7.0.4:buildscript { repositories { google() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:7.0.4' } } - 同步项目后,尝试重新构建。
2. 修复任务依赖顺序
错误提示显示在compileDebugJavaWithJavac完成前就查询了它的generatedSourceOutputDirectory属性,这是任务依赖顺序错误导致的。你可以在unityLibrary模块的build.gradle中添加明确的依赖约束:
// 在unityLibrary的build.gradle末尾添加 tasks.named('compileDebugJavaWithJavac') { // 确保生成源码的任务先于编译任务执行 dependsOn tasks.named('generateDebugSources') }
如果是第三方插件(比如Unity相关的构建插件)引发的问题,建议检查插件版本,升级到适配当前Gradle版本的最新版。
3. 清理弃用的R8配置
日志中提示android.enableR8已被弃用,打开项目根目录的gradle.properties,删除或注释掉以下行:
# android.enableR8=false
新版本的AGP已经强制启用R8,不需要手动禁用该配置。
问题原因说明
这个错误本质是Gradle增量构建机制的限制:某个任务试图提前访问compileDebugJavaWithJavac任务的动态属性值,而该属性只有在任务执行后才会生成有效映射。加上项目使用了Gradle 8.0不兼容的弃用功能,进一步触发了版本冲突问题。
内容的提问来源于stack exchange,提问作者Omar Mehmood
相关产品推荐
相关产品推荐

