iOS二进制framework归档报错:无法生成bitcode bundle,framework未含完整bitcode
iOS Framework归档bitcode报错解决方案
- 首先校验你当前使用的混淆framework本身是否包含全bitcode段,打开终端执行以下命令:
如果命令无任何输出,说明framework本身未携带全bitcode,仅修改主工程配置无法解决问题。otool -l 你的Framework可执行文件路径 | grep __bitcode - 如果你可以重新编译该framework,按以下配置生成带全bitcode的版本:
- framework工程的
ENABLE_BITCODE设置为YES,同时在Other C Flags、Other C++ Flags中均添加-fembed-bitcode参数 - 不要使用普通Build操作编译framework,必须通过Xcode Archive操作,或者执行如下命令行install构建生成二进制:
xcodebuild install -project 你的Framework项目名.xcodeproj -scheme 你的Scheme名 -configuration Release -destination 'generic/platform=iOS' INSTALL_DIR=./输出路径 SKIP_INSTALL=NO - 如果编译生成的是同时包含模拟器、真机架构的胖二进制,导入主工程归档前必须用lipo命令剥离所有模拟器架构,仅保留arm64真机架构,否则会触发bitcode校验失败。
- framework工程的
- 如果你无法重新编译该framework,或者不需要支持iOS 14及以下系统,直接全局关闭所有工程的bitcode即可:
- 主工程、所有子依赖工程的
ENABLE_BITCODE全部设置为NO - 如果使用CocoaPods管理依赖,需要在Podfile中添加如下post_install钩子,确保所有Pod工程的bitcode均被关闭:
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,清理Xcode缓存(快捷键Command+Shift+K),重启Xcode后重新执行归档操作。
- 主工程、所有子依赖工程的
注意:Xcode 14及以上版本已正式废弃bitcode,无特殊兼容需求时直接关闭bitcode是成本最低的解决方案
内容的提问来源于stack exchange,提问作者Abdulrahman Essa
相关产品推荐
相关产品推荐

