构建Cordova应用时遇Gradle Daemon错误:2个不兼容、1个已停止,求解决
Hey Rajadurai, 我之前在构建Cordova安卓应用时也碰到过一模一样的Gradle Daemon冲突问题,折腾了好一会儿才搞定,给你分享几个亲测有效的解决步骤:
彻底终止所有Gradle Daemon进程
首先要把所有正在运行的、可能不兼容的守护进程全部停掉:- 执行命令:
gradle --stop,这个命令会终止所有Gradle相关的守护进程,不管是正在运行还是处于闲置状态的。 - 如果是Windows系统,还可以打开任务管理器,手动结束所有名为
java.exe或gradle.exe的进程,确保没有残留的进程干扰。
- 执行命令:
清理Gradle和Cordova的缓存文件
旧的缓存文件很可能是导致版本冲突的元凶,清理后能避免配置残留:- 删除Gradle本地缓存目录:
- Linux/macOS:
rm -rf ~/.gradle/caches - Windows:
rd /s /q %USERPROFILE%\.gradle\caches
- Linux/macOS:
- 进入Cordova项目根目录,执行
cordova clean android,清空安卓平台的临时构建产物。
- 删除Gradle本地缓存目录:
统一Gradle版本配置
不同版本的Gradle守护进程之间会存在兼容性问题,要确保项目使用的Gradle版本是稳定且兼容的:
打开项目下的platforms/android/build.gradle文件,找到distributionUrl这一行,将其修改为一个稳定的Gradle版本,比如:distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip同时检查
platforms/android/app/build.gradle中的compileSdkVersion和targetSdkVersion,确保它们与你使用的Cordova插件版本兼容,尽量遵循Cordova官方的版本推荐。强制禁用守护进程构建(临时方案)
如果上面的步骤还没解决问题,可以先强制不使用守护进程进行构建,避免冲突:
执行命令:cordova build android --gradleArg="--no-daemon"
这个命令会直接用当前进程完成构建,跳过守护进程的启动。如果构建成功了,之后可以去掉--no-daemon参数,Gradle会自动启动适配当前项目的守护进程。重置安卓平台(终极方案)
如果以上方法都无效,可能是安卓平台的配置文件已经损坏,尝试重置:
执行命令:cordova platform remove android cordova platform add android这个操作会重新生成干净的安卓平台配置文件,从根源上解决配置冲突问题。
完成这些步骤后,重新执行cordova build android,应该就能解决守护进程不兼容的问题了。
内容的提问来源于stack exchange,提问作者Rajadurai M

