Expo ejected的React Native应用在iOS模拟器启动崩溃求助
针对ExpoKit Eject后Xcode启动崩溃的排查建议
我之前也碰到过类似的Expo项目eject到ExpoKit后在Xcode中启动崩溃的情况,结合你给出的最小复现步骤,给你几个实用的排查方向:
检查版本兼容性
首先确认你的Xcode版本和当前使用的Expo SDK版本是否匹配。部分旧版Expo SDK对最新Xcode版本(比如Xcode 15及以上)的支持存在问题。你可以通过expo --version查看当前SDK版本,然后对照Expo官方的版本兼容说明调整Xcode或SDK版本。比如Expo SDK 49推荐使用Xcode 14.3及以上版本。彻底清理缓存后重新构建
缓存问题经常是这类崩溃的元凶,建议按以下步骤清理:- 清理Pod相关缓存:执行
pod deintegrate && pod cache clean --all,之后重新运行pod install - 清理Xcode缓存:打开Xcode后按
Cmd+Shift+K清理构建文件夹,再按Cmd+Option+Shift+K清理派生数据 - 清理Expo缓存:执行
expo r -c重启Expo服务,之后重新执行eject流程
- 清理Pod相关缓存:执行
获取更详细的崩溃日志
你现在提供的是内核级的崩溃栈,信息太笼统。可以通过这两个方式获取更详细的错误信息:- 在Xcode的
Debug Navigator中查看完整的崩溃调用栈,定位到具体出错的代码模块(比如是否是ExpoKit初始化环节出问题) - 打开模拟器的
设置 > 隐私与安全性 > 分析与改进 > 分析数据,找到对应应用的崩溃日志,里面会包含具体的错误原因,比如缺失的依赖库、初始化失败的模块等
- 在Xcode的
检查Podfile与项目配置
- 打开eject后的
ios/Podfile,确认所有Expo相关的Pod都正确引入,没有版本冲突。可以尝试删除Podfile.lock后重新执行pod install - 检查Xcode项目的
Build Settings,确认Framework Search Paths和Library Search Paths配置正确,确保ExpoKit相关的框架能被正确找到
- 打开eject后的
尝试重新Eject并调整配置
有时候eject时的配置选项可能导致问题,你可以试试:- 使用
expo eject --force强制重新生成原生项目文件 - 重新eject时切换语言模板(比如从Objective-C换成Swift),看是否能解决崩溃问题
- 使用
如果以上方法都没有效果,建议尝试创建一个使用不同Expo SDK版本(比如比当前版本低一个大版本)的新项目,重复eject流程,看是否能复现问题,以此排除是SDK版本本身的bug。
内容的提问来源于stack exchange,提问作者ninjaboy




