使用xcode7在真机上运行项目,结果发现工程编译不过,问题报的是以下错误:
‘/Users/**/Framework/SDKs/PolymerPay/Library/mobStat/lib**
SDK.a(**ForSDK.o)’does not contain bitcode. You must
rebuild it with bitcode enabled (Xcodesetting
ENABLE_BITCODE), obtain an updated library from the
vendor, or disablebitcode for this target. for
architecture arm64
这个错误在真机测试中遇到,模拟器中没有问题。
解决方案就是点击target的Build Settings 切换到all , 搜索 bitcode 将其设置为No ,然后在编译就可以通过。
Bitcode 介绍
当项目进行编译时,Xcode 使用 clang 或者 swiftc 对项目进行编译,然后交给 LLVM 来创建二进制的包,以适配虚拟机(x86/64)和真机(arm6/arm7/arm7s/arm64)环境。这样得来的二进制包,被称为“胖二进制包”(Fat Binary)。
如果启用 Bitcode 的话,那么生成“胖二进制包”的过程会被去掉,LLVM 只会生成一个中间语言 bitcode 包。这么干是有不少好处的,但是就不能在所有环境运行了,所以后面一步打包工作总是需要有人来做的——App Store来干这个事儿。这样一来,包体积更小,运行也更快了,也是 iOS9 “瘦身功能”的一部分。未来,所有的 WatchOS 应用会强制 bitcode 提交,但 iOS 应用还没有这个要求