Cordova编译Android报错:未检测到已安装Build Tools及环境变量疑问
问题:Cordova 12.0.0编译Android应用时无法识别已安装的Build Tools 34.0.0
环境信息
- 系统:Mac Sonoma 14.5
- Cordova版本:12.0.0(cordova-lib@12.0.1)
- 已安装组件:Android Build Tools 34.0.0、SDK 14(路径:
/Users/ja/Library/Android/sdk)
报错信息
执行cordova build android时触发错误:
$ cordova build android Checking Java JDK and Android SDK versions ANDROID_HOME=undefined (recommended setting) ANDROID_SDK_ROOT=/Users/ja/Library/Android/sdk (DEPRECATED) Using Android SDK: /usr/local/Caskroom/android-platform-tools/35.0.1 BUILD SUCCESSFUL in 989ms 1 actionable task: 1 up-to-date Subproject Path: CordovaLibSubproject Path: app FAILURE: Build failed with an exception. * Where:Script '/Users/ja/Documents/works/stellantis/tablets-app/hello/platforms/android/CordovaLib/cordova.gradle' line: 73 * What went wrong: A problem occurred evaluating script. > No installed build tools found. Please install the Android build tools version 34.0.0.
已执行操作
- 通过Android Studio完成SDK 14和Build Tools 34.0.0的安装,确认Build Tools路径存在:
/Users/ja/Library/Android/sdk/build-tools/34.0.0 - 在
~/.bash_profile和~/.zshrc中配置环境变量:
export ANDROID_HOME=~/Library/Android/sdk export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools
- 执行
source ~/.bash_profile和source ~/.zshrc重载配置
疑问
- 日志中为何显示
ANDROID_HOME=undefined? - Cordova为何使用
/usr/local/Caskroom/android-platform-tools/35.0.1作为SDK路径,而非指定的/Users/ja/Library/Android/sdk?
解决方案
修复ANDROID_HOME未识别问题
- 验证配置是否生效:终端执行
echo $ANDROID_HOME,若输出为空,说明配置未加载。Mac Sonoma默认shell为zsh,需确保~/.zshrc中的配置无语法错误,且未被其他配置覆盖。可临时在终端执行export ANDROID_HOME=/Users/ja/Library/Android/sdk,再运行编译命令测试。 - 清理废弃变量冲突:
ANDROID_SDK_ROOT已被废弃,若系统中存在该变量可能干扰Cordova读取,执行unset ANDROID_SDK_ROOT后重新编译。
修正SDK路径错误问题
- 调整PATH优先级:Homebrew Cask安装的android-platform-tools可能在PATH中优先级更高,导致Cordova误识别。修改PATH配置将Studio SDK路径前置:
export PATH=$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$PATH
- 强制指定SDK路径:
- 项目根目录修改
config.xml,添加配置:<platform name="android"> <preference name="AndroidSdkPath" value="/Users/ja/Library/Android/sdk" /> </platform> - 或编译时直接指定:
cordova build android -- --android-sdk-root=/Users/ja/Library/Android/sdk
- 项目根目录修改
额外排查步骤
- 检查Build Tools完整性:打开Android Studio的SDK Manager,确认Build Tools 34.0.0安装完整,无损坏。可尝试卸载后重新安装。
- 调试gradle逻辑:进入
platforms/android/CordovaLib/cordova.gradle文件,在第73行前添加println("Looking for build tools in: " + androidSdkDir),重新编译查看输出路径,定位查找逻辑问题。
内容的提问来源于stack exchange,提问作者djo
相关产品推荐
相关产品推荐

