Bitcode真机测试要修改为 NO

You must rebuild it with bitcode enabled(Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, ordisable bitcode for this target. for architecture arm64

意思就是说:要不你第三方类库支持 bitcode 要不你就关掉它


实际上,在Xcode 7中,我们新建一个iOS程序时,bitcode选项默认是设置为YES的。我们可以在”Build Settings”->”Enable Bitcode”选项中看到这个设置。不过,我们现在需要考虑的是三个平台:iOS,Mac OS,watchOS。
对于iOS,bitcode是可选的;对于watchOS,bitcode是必须的;而Mac OS是不支持bitcode。

        所以,如果我们的工程需要支持bitcode,则必要要求所有引入的第三方库都支持bitcode。



确保打包的时候使用的是fembed-bitcode, 而不是fembed-bitcode-maker 

You should be aware that a normal build with the -fembed-bitcode-marker option will produce minimal size embedded bitcode sections without any real content. This is done as a way of testing the bitcode-related aspects of your build without slowing down the build process. The actual bitcode content is included when you do an Archive build. 

  • fembed-bitcode-maker:只是简单的标记一下在archive出来的二进制中bitcdoe所在的位置。 

  • fembed-bitcode: 真的会生成bitcode指令,并且嵌入到二进制中,这个设置不止要在app中设置,同样你也必须在编译静态链接库的时候使用。而且需要主题的是该参数系统只默认在archive模式下会添加 

需要注意的是bitcode只默认在archive下编译。在debug和release下并不会。 

如果您开发的是app那么走正常的打包archive流程就好了。如果你正在开发.a静态库或者framework,请注意打包方式设置为 archive,或者在打包脚本中加入-fembed-bitcode参数。如果需要的话,需要在Build Settings中打开 DEPLOYMENT_POSTPROCESSING=YES,设置Strip Style为debugging。 

检测是否打开Bitcode 

当打开bitcdoe选项之后,我们可以使用otool工具来检查二进制文件中是否包含bitcode段。 

针对于静态链接库.a文件 

otool -arch armv7 -l xxxx.a | grep __bitcode | wc -l 

如果是当前库支持.a文件则会输出一个数字 

Bitcode适配指南

如果不支持bitcode则不会出现该数字。 

上述命令只检查了armv7架构,同时,也必须使用改指令检查其他的指令集是否包含bitcode如:arm64,armv7s等等 

检查app或者framework中是否包含bitcode 

由于app中二进制和framework中二进制文件与.a文件存在差异,因为需要检查的是__LLVM段,当出现该段的时候,则表示支持bitcdoe,否则不支持。 

otool -l xxxx | grep __LLVM | wc -l 

这里otool有个bug,当你的framework使用过lipo命令,进行拆解和合并之后,需要指定指令集进行检查才可以。 

otool -arch armv7 -l xxxx | grep __LLVM | wc -l 

BUT, 上述检查过了之后,也不一定是真的支持bitcode,在实际的测试中,发现上述检测命令通过之后,某个使用的第三方库,依然报错不支持bitcode。 因而最终结果,还是需要以是否能够连接成功为准。重要事情说三遍,上述网上流传的检测方法只做参考,最终还是要以实际效果为准。 

最终结果检查 

如果您是一个APP,可以直接进行Archive打包,如果是一个库,则建议建一个Demo工程进行打包,记得要打开bitcode设置。 

CheckPoint1 连接是否报错 

如果有任何一个库没有打开bitcode链接,将会出现类似下方的错误。只要链接过了,那么恭喜了,基本上是OK了。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值