使用一个第三方SDK打包时报invalid bitcode signature(调试时没有问题)。
从报错中发现有个armv7。所以联想到是不是第三方SDK不支持armv7的关系。将Build Setting中的armv7去掉后打包居然成功了。
虽然问题解决了。但是有两个疑问,
1、为什么调试时没有问题,打包有问题?
答:在Build Setting的Architectures 中的“Build Active Architecture Only” Debug是YES,Release是NO。
YES的话Build Setting->Valid Architetures设置成arm64,armv7 , armv7s同时支持,也只会编译对应指令集的包;若选择NO,则编译器会整合两个指令集到一起,此时的包比较大,但是能在iPhone5上使用armv7s的优化,同时也能适配老的设备。一般都是Debug时“Build Active Architecture Only”选择YES,用当前的架构看代码逻辑是否有问题;而在Release时选择NO,来适配不同的设备
2、将armv7去掉后会有什么影响?
答:对于iOS设备来说iOS的指令集有armv6、armv7、armv7s、arm64这样四种,不同型号的iOS设备使用不同的指令集,下面是各自的区别:
armv7设备:iPhone 3GS, iPhone 4, iPhone 4S
iPad , iPad 2等。
armv7s设备:iPhone 5,iPhone 5C
iPad 4等
arm64: iPhone 5S, iPhone 6,iPhone 6Plus
iPad Air, Retina iPad Mini等