Expo 49生产环境部署崩溃求助:EAS构建后App无法运行
问题描述
- Expo 49 项目在 Expo Go 中运行正常,执行
expo prebuild后 iOS/Android 本地构建也无问题 - 执行
eas build生成生产构建包后,App 直接崩溃:- Android 端抛出错误:
couldn't find DSO to load: libjscexecutor.so,随后闪退 - iOS 端出现场景更新失败相关错误
- Android 端抛出错误:
- 仅生产构建环境出现问题,开发环境完全正常
可能的解决方案
1. 理顺依赖兼容性
- 确认所有依赖与 Expo 49 兼容(Expo 49 对应 React Native 0.72.x),避免安装不兼容的高低版本包
- 执行
npm ls react-native或yarn list react-native,检查是否存在多版本 React Native,若有则清理冗余依赖 - 删除
node_modules、package-lock.json/yarn.lock,重新执行npm install/yarn install
2. 调整 EAS Build 配置
- 在
eas.json中给生产构建明确配置参数,避免默认配置模糊导致的问题:{ "build": { "production": { "android": { "buildType": "app-bundle", "gradleCommand": ":app:bundleRelease" }, "ios": { "buildConfiguration": "Release" } } } } - 核对
app.config.js中的包名配置,ios.bundleIdentifier和android.package不能写错,生产环境对这类配置要求严格
3. 修复 Android 端 libjscexecutor.so 缺失问题
- 如果已经执行
expo prebuild生成了 Android 项目,打开android/app/build.gradle,添加以下打包配置:android { packagingOptions { pickFirst 'lib/x86/libjscexecutor.so' pickFirst 'lib/x86_64/libjscexecutor.so' pickFirst 'lib/armeabi-v7a/libjscexecutor.so' pickFirst 'lib/arm64-v8a/libjscexecutor.so' } } - 确认
eas.json中 Android 构建未禁用 Hermes(Expo 49 默认启用),若需手动禁用需明确配置:"android": { "hermesEnabled": false }
4. 解决 iOS 端场景更新失败问题
- 进入 iOS 项目目录,执行
pod deintegrate清理旧的 Pods,再重新执行pod install - 在
eas.json的 iOS 生产配置中禁用缓存,避免旧缓存引发的异常:"ios": { "cache": { "disabled": true } } - 检查
app.config.js中的ios.infoPlist配置,比如 NSAppTransportSecurity 是否设置错误,导致资源加载失败触发场景更新错误
5. 额外排查步骤
- 查看 EAS Build 日志中的完整错误信息,定位具体的依赖冲突或构建失败细节,别只看最终的崩溃提示
- 尝试本地执行生产环境构建:
expo run:android --variant release或expo run:ios --configuration Release,复现问题后更易排查 - 确认项目中未使用 Expo 49 不支持的第三方原生模块,若有则替换为兼容模块
内容的提问来源于stack exchange,提问作者kdh89811
相关产品推荐
相关产品推荐

