React Native项目Xcode Archive打包WebRTC无bitcode报错如何解决?
react-native-webrtc Archive bitcode错误解决方案
错误根因
react-native-webrtc 依赖的预编译 WebRTC.framework 未携带bitcode标记。Debug模式下运行模拟器时Xcode默认不强制校验bitcode,而Archive生产包时默认开启bitcode校验,因此触发链接报错。
注:苹果从Xcode 14开始已正式废弃iOS平台的bitcode要求,关闭bitcode不会影响App Store审核与应用正常功能。
解决方案
方案1:关闭项目bitcode(推荐,操作成本最低)
- 打开项目根目录下的
.xcworkspace文件进入Xcode - 左侧导航栏选中项目根节点,在「TARGETS」分类下选中你的应用主目标(本案例中为DanceConnectyCube)
- 切换到「Build Settings」标签页,搜索
ENABLE_BITCODE,将对应值从Yes修改为No - 同页面切换到「PROJECT」分类下的项目根配置,同样将
ENABLE_BITCODE改为No,避免配置继承冲突 - 如果你使用CocoaPods管理依赖,建议在Podfile末尾添加以下自动配置钩子,避免每次执行
pod install后手动修改Pods配置:
post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['ENABLE_BITCODE'] = 'NO' end end end
添加完成后执行一次pod install生效。
- 配置修改完成后,按
Shift+Cmd+K清空Xcode缓存,删除DerivedData目录下的旧构建产物,重新执行Archive操作即可。
方案2:使用带bitcode的WebRTC框架(仅当你必须开启bitcode时使用)
- 升级
react-native-webrtc到最新正式版,确认新版本是否已经支持bitcode - 若官方版本仍不支持,可自行编译携带bitcode的WebRTC.framework,替换掉
react-native-webrtc库中自带的框架文件
内容的提问来源于stack exchange,提问作者preston
相关产品推荐
相关产品推荐

