Xcode构建报错FBLPromises.framework不含bitcode问题咨询
修复方案
该问题本质是Bitcode关闭配置未覆盖全量target导致,按以下步骤操作即可解决,同时可一并修复Xcode 14下的归档签名报错:
- 先清理全量构建缓存与旧Pods配置,进入工程iOS目录执行终端命令:
rm -rf ~/Library/Developer/Xcode/DerivedData/* pod deintegrate pod cache clean --all
- 打开Podfile,找到末尾的
post_install代码块,替换为如下内容,强制所有Pods依赖统一关闭Bitcode、关闭依赖项签名,避免配置不一致:
post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| # 所有构建模式下强制关闭Bitcode config.build_settings['ENABLE_BITCODE'] = 'NO' # 关闭第三方依赖的代码签名,解决Xcode14签名报错 config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO' config.build_settings['CODE_SIGNING_REQUIRED'] = 'NO' config.build_settings['EXPANDED_CODE_SIGN_IDENTITY'] = '' end end end
修改完成后执行pod install使配置生效。
- 打开Xcode工程,逐一检查所有手动创建的target(包括主App、通知扩展、分享扩展等):进入
Build Settings页,搜索ENABLE_BITCODE,将Debug、Release、Profile所有构建模式下,Any iOS SDK、Any iOS Simulator SDK所有分支的配置值全部改为No,不要遗漏任何自定义target。 - 若为Flutter工程(从路径中的Runner目录可判断),额外检查
ios/Flutter目录下的自定义xcconfig配置文件,删除所有ENABLE_BITCODE = YES的配置行,避免Flutter编译配置覆盖Xcode手动设置。
原因说明
- FBLPromises是PromisesObjC组件的二进制产物,该组件通常作为Firebase、Google系SDK的依赖,官方发布的预编译版本默认不包含Bitcode段,只要任意一个target在归档时开启Bitcode校验,就会抛出该错误。
- 仅在Podfile全局配置块写Bitcode关闭规则无法覆盖所有Pods依赖的构建配置,必须在
post_install钩子中遍历所有target、所有构建模式逐一设置才能生效。 - Xcode 14开始默认开启Pods依赖的代码签名校验,仅为主target配置开发团队无法覆盖依赖项的签名配置,关闭依赖项签名是CocoaPods工程适配Xcode14+的通用方案。
- Xcode 14及以上版本苹果已正式废弃Bitcode机制,App Store不再接收携带Bitcode段的安装包,全量关闭Bitcode完全符合官方要求,无需尝试开启
ENABLE_BITCODE解决问题。
内容的提问来源于stack exchange,提问作者satchel
相关产品推荐
相关产品推荐

