React Native iOS模拟器正常但真机构建失败如何解决
问题原因
两个报错同源:开启use_frameworks!的情况下,CocoaPods不会自动将主项目的Bitcode配置同步到Pods下的所有依赖项。你手动在主项目禁用Bitcode后,RCT-Folly等RN核心依赖的构建配置中ENABLE_BITCODE仍为YES,与链接参数-U产生冲突,最终触发真机构建链接失败。iOS模拟器构建默认不触发Bitcode相关校验,因此可以正常运行。
修复方案
按以下顺序操作即可解决:
- 替换Podfile中原有
post_install代码块,新增强制关闭所有Pods依赖Bitcode的逻辑:
post_install do |installer| react_native_post_install(installer) __apply_Xcode_12_5_M1_post_install_workaround(installer) # 强制给所有Pod依赖关闭Bitcode installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['ENABLE_BITCODE'] = 'NO' end end end
- 清理全量构建缓存,避免旧配置残留,依次执行命令:
- 进入iOS工程目录:
cd ios - 重新安装Pods依赖:
pod install --repo-update - 清空Xcode构建缓存:
rm -rf ~/Library/Developer/Xcode/DerivedData/* - 返回项目根目录清理RN打包缓存:
cd .. && npx react-native start --reset-cache
- 进入iOS工程目录:
- 重新执行
react-native run-ios --device "Max’s Iphone 12 Mini"命令,或在Xcode中选中真机设备直接构建即可。
补充说明:苹果从Xcode 14开始已正式废弃Bitcode机制,React Native 0.70及以上版本默认也关闭了Bitcode。开启
use_frameworks!后出现该问题,本质是CocoaPods的配置同步逻辑缺陷,不需要反复修改主项目的Build Settings,通过post_install钩子统一修改所有Pods的构建配置是最稳定的解决方式。
内容的提问来源于stack exchange,提问作者max
相关产品推荐
相关产品推荐

