You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Expo托管React Native应用iOS EAS构建包黑屏/崩溃,但Expo Go正常运行

Expo托管React Native应用iOS EAS构建包黑屏/崩溃,但Expo Go正常运行

这种情况我之前也踩过坑,Expo Go的沙箱环境和EAS的原生构建环境差异确实容易在批量更新依赖后出问题。给你几个实用的排查方向,按顺序试应该能快速定位问题:

  • 先跑依赖兼容性检测:批量更新最容易出现核心包版本不匹配的问题,比如expo、react-native、babel-preset-expo这些必须严格对应。直接在项目根目录执行:

    npx expo-doctor
    

    它会自动扫描所有依赖,找出不兼容的版本并给出修复建议,我上次就是靠这个发现metro版本和expo不兼容导致的黑屏。

  • 深挖EAS构建日志:虽然开发版崩溃没法直接看设备端日志,但构建过程的日志里大概率有线索。打开Expo Dashboard找到对应的构建记录,拉到日志底部,搜索error或warning关键词,重点看iOS编译阶段的报错——比如某个依赖的原生模块编译失败,Expo Go会自动兼容这类问题,但EAS原生构建会直接暴露出来。

  • 用二分法缩小排查范围:先把你更新后修改的代码全部注释掉,重新构建测试。如果问题还存在,就逐步回退更新的依赖,优先回退核心包(expo、react-native、babel-preset-expo),每次只回退一个包后用EAS构建验证,直到找到触发问题的那个依赖。这种方法比全量回退高效太多。

  • 检查原生配置遗漏:有些依赖更新后需要同步修改app.json/app.config.js的配置,比如expo-build-properties可能需要调整iOS部署目标,或者新依赖需要添加权限声明。对比更新前的配置文件,看看有没有遗漏的权限、插件配置项,比如expo-device是否需要添加对应的隐私权限?

  • 捕获崩溃日志的两种方法:

    • 用开发客户端远程日志:安装好崩溃的开发构建包后,执行npx expo start --dev-client,尝试连接设备,有时候能捕获到启动时的错误信息;
    • Xcode查看崩溃报告:把iOS设备连接到电脑,打开Xcode→Window→Devices and Simulators,找到你的设备,查看Crash Reports,里面的堆栈信息能精准定位到崩溃的模块。
  • 清理构建缓存:EAS的缓存可能残留旧的编译文件,导致问题反复出现。构建时加上--clear-cache参数强制重新编译:

    eas build --platform ios --clear-cache
    

按这个流程排查,应该能很快找到问题根源。我上次遇到类似情况是因为react-native-reanimated的版本和expo不兼容,回退到expo官方推荐的版本就解决了。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 11:05:29