起因:
最近更新之后在 Xcode 的 Organizer 发现了一大批9.3.5崩溃的情况,而且唯独崩溃9.3.5,占有率为99%,其他1%也是9.1和9.2的闪退。拿到iOS9.3.5 测试机之后发现,从 Xcode 导入的 App 包并不会闪退。闪退的只有 App Store 的包。费了点时间装上 TestFlight 之后总算找到原因了。
如果你的iOS 9.3.5 的闪退信息是:Dyld Message: Library not loaded: @rpath/XXXX.framework/XXXX
那么,请留意在XXXX的库中的info.plist里是否有参数Required device capabilities ,有的话请删除。
我的情况是在库的 info.plist 有一个参数 Required device capabilities 的内容是arm64。
该参数是限制在具有某种特性条件的设备上运行,设置成arm64就是说这个设备仅支持arm64指令集。但是我们在支持armv7的机型上也使用了该库,所以会导致旧机型无法运行而闪退。
所以在发布时候请检查info.plist 是否有 Required device capabilities 参数,有则必须删除内容:arm64
发现是最高能升级到iOS 9.3.5的机器,例如ipad3 ,多半为armv7架构,现在普遍是arm64架构。
arm64 : 必选项,支持iphone5s及以上;最低支持版本:iOS5.1.1
armv7s:支持iPhone5及以上;
armv7:支持iPhone4及以上;