iOS项目使用CocoaPods集成第三方库Bitcode设置无效的解决方案

编译环境

  • Mac: Catalina 10.15,其他Mac低版本也试过
  • Xcode: Version 11.1 (11A1027)
  • Cocopods: 1.8.4,1.8.3

情况描述

  • 工程A使用Pod集成了第三方库B,项目B依赖Framework C,因此在集成B的时候,依赖C 会使用Pod进行导入;
  • 工程A不管是编译还是调试运行均无问题,但是Archive的时候无法通过;
  • Framework C本身开启了Bitcode,工程A不管开不开启Bitcode都会提示如下错误:在这里插入图片描述

解决思路

① 各种百度(梯子出问题了,无法谷哥,也是无奈),千篇一律的关闭Bitcode,emmmmm,无任何意义。
② 在各种搜索之后,感觉不太对劲。尝试过单独提取Framework C放入工程无任何问题,因此怀疑情况有以下几点:

  • Xcode 11的问题,准备下载Xcode 10进行验证测试,但是下载速度实在太慢,就先验证另一个怀疑点;
  • CocoaPods编译依赖库的时候搞的鬼,主工程设置Bitcode为NO之后,但是Pod编译的时候把部分依赖工程设置为YES了;

因此在搜索了CocoaPods相关参数及编译文本之后,终于发现了“ENABLE_BITCODE”的字段。
在主工程的Podfile文件的末尾(代码需要和工程target同级)加入如下代码,强制设置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 update,工程Archive一切正常。

在此,问题得到最终解决,但是怀疑点1还是未验证,个人怀疑Xcode11可能存在部分缺陷(代后期测试验证)。

你可能感兴趣的:(iOS)