最近使用第三方库的时候,经常会遇到在Xcode7下编译报错的问题,错误大都有一个关键字:bitcode。例如:
ld: ‘/Users//Framework/SDKs/PolymerPay/Library/mobStat/libSDK.a(**ForSDK.o)’ does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture arm64
那么bitcode是什么呢?
其实bitcode是新推出一种包优化方式,bitcode是被编译程序的一种中间形式的代码,包含bitcode配置的程序会在App Store上被编译和链接。bitcode允许苹果在后期重新优化我们程序的二进制文件,而不需要我们重新提交新的版本。
我们要想解决这个问题,要么是第三方库支持bitcode,要么就不启用bitcode。
而对于苹果的三个平台:
- iOS,bitcode是可选的
- watchOS,bitcode是必须的
- Mac OS,不支持bitcode
但是现在用到的很多第三方库还没能支持bitcode,要是等他们都一个个支持就太麻烦了,我们可以在Xcode7中关闭bitcode:
在项目名-->Target-->Build Settings-->Enable Bitcode中设为NO就可以了。
如果我们启用bitcode,那么在提交包时,下面这个界面也会有个bitcode的选项: