求助:Cordova build android仅显示路径,无法构建Android项目
我之前在维护旧版Cordova项目时也碰到过一模一样的情况——构建时只刷出环境变量路径,然后就卡住不动,完全生成不了Android Studio项目。结合你用到的插件和版本,给你一步步排查的实操方案:
1. 先把环境变量的坑填实
你说构建时只显示ANDROID_HOME和JAVA_HOME,这大概率是环境配置有隐性问题,cordova-android 7.x对环境要求很苛刻:
- JAVA_HOME必须指向JDK 8,不能是JRE,也不能是JDK 9及以上版本(高版本JDK的语法和工具链不兼容)
- ANDROID_HOME对应的SDK必须包含API Level 26(cordova-android 7.0.0的目标SDK就是26),还要确保安装了
Android SDK Build-Tools 26.0.2这个特定版本,高版本的Build-Tools会和旧平台模板冲突 - 一定要把SDK的
tools、platform-tools目录,以及JDK的bin目录加到系统PATH里,终端直接运行javac -version、adb version、sdkmanager --list,三个命令都能正常输出才算配置到位
2. 排查插件兼容性问题
你用到的这几个插件,部分旧版本和cordova-android 7.x不兼容,我给你列经过验证的兼容版本,先清掉旧插件再重新安装:
# 批量移除所有插件 cordova plugin remove --save cordova-plugin-inappbrowser cordova-plugin-barcodescanner cordova-plugin-file-transfer cordova-plugin-tts cordova-plugin-document-viewer cordova-plugin-geolocation # 重新添加兼容版本 cordova plugin add cordova-plugin-inappbrowser@3.2.0 cordova plugin add cordova-plugin-barcodescanner@0.7.4 cordova plugin add cordova-plugin-file-transfer@1.7.1 cordova plugin add cordova-plugin-tts@0.2.3 cordova plugin add cordova-plugin-document-viewer@0.9.10 cordova plugin add cordova-plugin-geolocation@4.0.2
比如旧版Barcode Scanner会硬编码依赖低版本的cordova-android,不更新的话会直接打断构建流程。
3. 清理缓存和重建平台
Cordova的缓存文件或者平台目录损坏是常见的坑,执行以下命令彻底重置:
# 清理构建缓存 cordova clean android # 删除旧平台后重新添加 cordova platform remove android cordova platform add android@~7.0.0
重新添加平台时,Cordova会重新下载完整的android平台模板,能避免之前的模板文件损坏导致的构建卡死。
4. 盯着Verbose日志找关键错误
你已经开了verbose模式,别只看开头的环境变量,往下翻肯定有具体的错误提示——比如某个插件的安装脚本执行失败、SDK依赖缺失、权限配置冲突之类的。举个例子,如果日志里出现Failed to install 'cordova-plugin-file-transfer': Error: cmd: Command failed with exit code 1,那就是这个插件的安装出了问题,针对性解决就行。
5. 强制生成Android Studio项目
如果上面的步骤都没用,试试用gradle参数强制生成项目:
cordova build android -- --gradleArg=-PcdvBuildMultipleApks=false
这个命令会关闭多APK构建模式,有时候复杂的APK拆分配置会导致Cordova卡住。生成后直接打开platforms/android目录下的项目文件,用Android Studio打开,它的构建错误提示会比Cordova的日志详细得多。
内容的提问来源于stack exchange,提问作者S_S

