更新XCode后React Native运行iOS模拟器报xcrun non-zero code:2错如何解决
问题原因
该报错是Xcode升级后,React Native项目的本地构建缓存、依赖版本与新Xcode的编译工具链、iOS SDK版本不匹配导致,Expo本身能运行但启动模拟器触发原生构建时就会触发兼容性崩溃。
排查解决步骤
方案1:适配新版Xcode
- 先停止所有运行中的Metro服务与模拟器,清理全链路缓存:
- 清理Xcode全局构建缓存:
rm -rf ~/Library/Developer/Xcode/DerivedData - 清理iOS项目构建产物与依赖缓存:
cd ios rm -rf Pods Podfile.lock build pod install --repo-update - 重启Metro并清除RN缓存:
npx react-native start --reset-cache
- 清理Xcode全局构建缓存:
- 若清理缓存后仍报错,需要给Podfile添加编译适配补丁,打开
ios/Podfile,在post_install代码块中加入以下配置:
保存后重新执行post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| # 修复架构适配问题 config.build_settings['ONLY_ACTIVE_ARCH'] = 'NO' # 修复新SDK编译参数不兼容问题 config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES' # 禁用断言报错(可选,仅临时救急使用) config.build_settings['OTHER_SWIFT_FLAGS'] = '-disable-assertions' end end endpod install再构建项目即可。 - 若补丁无效,检查你当前的Expo与React Native版本:如果Xcode升级到了14及以上版本,需要将Expo升级到47+版本、React Native升级到0.70+版本才能完全适配。
方案2:不升级Xcode也使用iPhone 13模拟器
无需升级Xcode即可手动添加iPhone 13对应的模拟器运行时:
- 打开旧版Xcode → 顶部菜单栏Xcode → Settings → Platforms
- 点击左下角+号,选择iOS,找到iOS 15及以上版本的运行时下载安装,安装完成后即可在模拟器列表中选择iPhone 13机型,完全满足团队适配要求。
方案3:回退Xcode到旧版本
- 先卸载当前新版Xcode:打开应用程序文件夹,将Xcode拖入废纸篓,执行
rm -rf ~/Library/Developer清理所有Xcode残留配置 - 下载对应旧版本Xcode安装包,安装完成后执行以下命令切换命令行工具路径:
输入密码确认后即可恢复旧版本开发环境。sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
内容的提问来源于stack exchange,提问作者Callum Reid
相关产品推荐
相关产品推荐

