npx expo prebuild在Android和iOS平台执行失败求助
Expo 50 双平台构建问题解决方案
环境信息
- Node.js: 18.17.0
- Cocoapods: 1.15.2
- Ruby: 3.0.0p0
- Expo SDK: 50.0.7
- 系统:macOS 13.5
iOS 端:pod install 加载native_modules.rb失败
解决方案
彻底清理缓存与旧构建文件
- 删除项目根目录的
node_modules:rm -rf node_modules - 清除npm缓存:
npm cache clean --force - 进入ios目录,删除
Podfile.lock和Pods文件夹:rm -rf Podfile.lock Pods
- 删除项目根目录的
修复CLI依赖关联
- 检查
package.json中@react-native-community/cli和@react-native-community/cli-platform-ios的版本,确保两者版本匹配(建议使用适配Expo 50的最新稳定版),执行npm install重新安装依赖。 - 修改ios目录下的
Podfile,将顶部的require语句替换为:require File.join(File.dirname(`node --print "require.resolve('@react-native-community/cli-platform-ios')"`), "native_modules")
- 检查
重新构建
- 执行
npx expo prebuild --clean彻底清理旧构建配置并重新生成原生文件 - 进入ios目录,手动执行
pod install --repo-update更新pod仓库并安装依赖
- 执行
Android 端:expo run:android Gradle依赖解析失败(版本兼容问题)
解决方案
切换Java 17环境
Expo SDK 50要求使用Java 17,通过以下方式切换:- 使用brew安装:
brew install openjdk@17 - 配置环境变量,确保终端使用Java 17:
export PATH="/usr/local/opt/openjdk@17/bin:$PATH"(可写入bash/zsh配置文件永久生效)
- 使用brew安装:
调整Gradle配置
- 打开
android/build.gradle,确保gradle插件版本与Expo 50适配:buildscript { dependencies { classpath 'com.android.tools.build:gradle:7.4.2' classpath 'com.facebook.react:react-native-gradle-plugin:0.72.+' } } - 打开
android/gradle/wrapper/gradle-wrapper.properties,设置gradle版本为7.5:distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip
- 打开
清理Gradle缓存并重新构建
- 删除android目录下的
.gradle文件夹:rm -rf android/.gradle - 进入android目录执行清理:
./gradlew clean - 重新执行构建:
expo run:android --clean
- 删除android目录下的
通用排查建议
- 检查
package.json中第三方依赖版本,确保所有库适配React Native 0.72(Expo 50基于该版本),老旧库需更新至兼容版本。 - 执行
npx expo doctor检查项目配置是否符合SDK 50要求,根据提示修复问题。
内容的提问来源于stack exchange,提问作者roseline
相关产品推荐
相关产品推荐

