Unity 2021.3.5 LTS中Gradle全版本构建失败求助
问题背景
使用Unity 2021.3.5 LTS版本,新建项目仅修改天空盒、添加相机脚本,未安装任何额外插件/包,构建Android时出现Gradle失败。尝试切换多个Gradle版本(修改.gradle文件)、参考视频和论坛均无法解决,错误日志如下:
启动Gradle守护进程,1个不兼容和7个已停止的守护进程无法复用,使用--status查看详情
构建中使用了已废弃的Gradle特性,导致无法兼容Gradle 9.0。
可以使用'--warning-mode all'查看具体废弃警告,判断是否来自自定义脚本或插件。评估项目':launcher'时出现问题。
org/gradle/initialization/BuildCompletionListener尝试:
使用--stacktrace选项查看堆栈跟踪。
使用--info或--debug选项获取更多日志输出。
使用--scan获取完整分析信息。构建失败,耗时6秒
已加载JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8CommandInvokationFailure: Gradle构建失败。
C:\Program Files\Unity\Hub\Editor\2021.3.5f1\Editor\Data\PlaybackEngines\AndroidPlayer\OpenJDK\bin\java.exe -classpath "C:\Program Files\Unity\Hub\Editor\2021.3.5f1\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\gradle-8.1.1\lib\gradle-launcher-8.1.1.jar" org.gradle.launcher.GradleMain "-Dorg.gradle.jvmargs=-Xmx4096m" "assembleRelease"标准错误输出:
FAILURE: 构建因异常失败。位置:
构建文件 'C:\UnityProjetos\ChessExperience\Library\Bee\Android\Prj\Mono2x\Gradle\launcher\build.gradle' 第1行错误原因:
评估项目':launcher'时出现问题。
org/gradle/initialization/BuildCompletionListener尝试:
使用--stacktrace选项查看堆栈跟踪。
使用--info或--debug选项获取更多日志输出。
使用--scan获取完整分析信息。构建失败,耗时6秒
已加载JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8标准输出:
启动Gradle守护进程,1个不兼容和7个已停止的守护进程无法复用,使用--status查看详情构建中使用了已废弃的Gradle特性,导致无法兼容Gradle 9.0。
可以使用'--warning-mode all'查看具体废弃警告,判断是否来自自定义脚本或插件。退出代码:1
解决方法
清理缓存与生成文件
- 关闭Unity,删除项目根目录下的
Library文件夹 - 删除用户目录下的Gradle缓存(Windows默认路径:
C:\Users\[你的用户名]\.gradle) - 重启Unity,等待项目重新生成后再次尝试构建
- 关闭Unity,删除项目根目录下的
使用Unity官方推荐的Gradle版本
Unity 2021.3.x LTS不兼容Gradle 8.x,官方推荐使用Gradle 6.7.1,不要手动修改.gradle文件:- 打开
Edit > Project Settings > Player > Android > Publishing Settings - 取消勾选
Custom Gradle Template,使用Unity自动生成的默认模板 - 进入
Edit > Preferences > External Tools,确保勾选Use embedded JDK和Use embedded Gradle,不使用外部版本
- 打开
重建Android项目结构
错误提示launcher模块的build.gradle文件损坏,直接删除自动生成的Android项目文件:- 删除项目中
Library/Bee/Android/Prj目录下的所有内容 - 回到Unity,触发一次Android构建,让系统重新生成完整的项目结构
- 删除项目中
获取详细错误栈
在Unity的Android构建设置中,添加Gradle命令行参数--stacktrace,可以得到更具体的异常信息,帮助定位org/gradle/initialization/BuildCompletionListener类缺失的根本原因
内容的提问来源于stack exchange,提问作者JoaoVR

