React Native项目安装react-native-navigation遇Android构建错误求助
问题背景
我正在为React Native项目集成wix的react-native-navigation,已完成以下操作:
- 通过CLI初始化项目,安装react-native-navigation,按配置说明完成手动配置和rnn-link操作。
第一个错误:找不到sdkmanager
运行react-native run-android时出现编译失败,报错指向node_modules\react-native-navigation\lib\android\app\build.gradle第177行:
Cannot run program "C:\Users\Paul\AppData\Local\Android\Sdk/cmdline-tools/latest/bin/sdkmanager": CreateProcess error=2, The system cannot find the file specified
原代码调用无后缀的sdkmanager,但Windows系统下该路径只有sdkmanager.bat。
修改代码后出现第二个错误
修改第177行代码为调用sdkmanager.bat后,编译进入执行阶段又崩溃:
Could not determine the dependencies of task ':react-native-navigation:compileReactNative63DebugAidl'. > Installed Build Tools revision 33.0.0 is corrupted. Remove and install again using the SDK Manager.
解决方案
1. 修复sdkmanager跨平台调用问题(避免直接修改node_modules)
直接修改node_modules文件会在依赖更新后失效,建议用patch-package打持久化补丁:
- 安装patch-package:
npm install patch-package --save-dev - 找到
node_modules\react-native-navigation\lib\android\app\build.gradle第177行附近的代码,替换为跨平台兼容写法:if (!buildToolsDir.exists()) { def sdkManagerCommand = Os.isFamily(Os.FAMILY_WINDOWS) ? "sdkmanager.bat" : "sdkmanager" def command = "${sdkDir.absolutePath}/cmdline-tools/latest/bin/${sdkManagerCommand} build-tools;${buildToolsVersion}" command.execute().waitForProcessOutput(System.out, System.err) } - 生成补丁:
npx patch-package react-native-navigation - 后续执行
npm install时,补丁会自动应用。
2. 解决Build Tools 33.0.0损坏问题
- 打开Android Studio的SDK Manager,切换到SDK Tools标签页
- 找到
Android SDK Build-Tools 33.0.0,取消勾选后点击Apply完成删除 - 重新勾选该版本(或选择与你的RN版本兼容的旧版本,如30.0.3),点击
Apply重新安装 - 清理项目缓存:
# 进入android目录执行 gradlew clean # 回到根目录 rm -rf node_modules package-lock.json npm install - 再次执行
react-native run-android
额外检查项
- 确认
ANDROID_HOME环境变量指向正确的SDK路径(如C:\Users\Paul\AppData\Local\Android\Sdk) - 在SDK Manager中确保
Android SDK Command-line Tools (latest)已完整安装 - 验证react-native-navigation版本与你的React Native版本兼容(如RN 0.63对应rnn 6.x系列)
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

