执行pnpm start:android:dev时遇sdkmanager未找到错误的解决求助
React Native Android构建报错:找不到sdkmanager可执行文件
每次执行pnpm start:android:dev命令时,都会返回如下错误:
What went wrong: Could not determine the dependencies of task >':react-native:packages:react-native:ReactAndroid:hermes-engine:configureBuildForHermes'. >Could not create task ':react-native:packages:react-native:ReactAndroid:hermes-engine:installCMake'. > Could not find sdkmanager executable.
已尝试的操作:
- 使用过仅命令行工具和Android Studio提供的SDK
- 设置环境变量
ANDROID_HOME=C:\Users\hmeli\Downloads\android_sdk - 在Path中添加
%ANDROID_HOME%\platform-tools和%ANDROID_HOME%\cmdline-tools\tools\bin,甚至改用完整路径,但均无效 - 在命令提示符(CMD)和PowerShell中执行
sdkmanager --version可正常运行,但在Git Bash中不行
解决方法
1. 修复Git Bash的环境变量加载问题
Git Bash在Windows下采用Unix风格路径,且可能无法完全继承系统环境变量,可按以下步骤处理:
- 临时验证:打开Git Bash,手动设置环境变量后再执行构建命令:
export ANDROID_HOME="/c/Users/hmeli/Downloads/android_sdk" export PATH="$PATH:$ANDROID_HOME/platform-tools:$ANDROID_HOME/cmdline-tools/tools/bin" pnpm start:android:dev - 永久生效:编辑Git Bash的配置文件
~/.bashrc或~/.bash_profile(无则新建),添加以下内容:
保存后执行export ANDROID_HOME="/c/Users/hmeli/Downloads/android_sdk" export PATH="$PATH:$ANDROID_HOME/platform-tools:$ANDROID_HOME/cmdline-tools/tools/bin"source ~/.bashrc使配置立即生效。
2. 确认cmdline-tools的目录结构
Android SDK要求cmdline-tools有特定目录结构才能被识别:
- 检查SDK目录下的结构是否为
android_sdk/cmdline-tools/latest/bin,如果是旧版的tools/bin,需调整:- 将
android_sdk/cmdline-tools/tools重命名为latest - 对应更新环境变量Path为
%ANDROID_HOME%\cmdline-tools\latest\bin(Windows系统)或$ANDROID_HOME/cmdline-tools/latest/bin(Git Bash)
- 将
3. 让Gradle直接读取SDK路径
在项目的android/local.properties文件中,明确指定SDK路径:
sdk.dir=C:\\Users\\hmeli\\Downloads\\android_sdk
或使用正斜杠格式避免转义:
sdk.dir=/c/Users/hmeli/Downloads/android_sdk
4. 验证Git Bash中的sdkmanager可执行性
在Git Bash中执行以下命令排查路径问题:
- 检查sdkmanager是否在Path中:
which sdkmanager - 如果返回空,直接执行完整路径验证:
/c/Users/hmeli/Downloads/android_sdk/cmdline-tools/latest/bin/sdkmanager --version
5. 检查Git Bash权限
尝试以管理员身份运行Git Bash,避免因权限不足导致无法访问SDK目录或执行sdkmanager。
内容的提问来源于stack exchange,提问作者Hm Elius Hossain Himel
相关产品推荐
相关产品推荐

