解决过程
猜想1: 由于升级了第三方SDK引起
从用户反馈的崩溃视频里来看,是用户一启动App就崩溃,所以我们猜想是不是在didFinishLaunchingWithOptions方法里出现了问题. 然后在对比了代码后发现,在这个版本的开发计划中并没有对该处代码进行过改动.相反,最大的改动就是升级了两个第三方的SDK,猜测可能是在启动的时候进行SDK相关配置不当引起的. 所以我们尝试恢复SDK版本进行打包测试, 逐一恢复SDK后, 我们将两个测试包胆战心惊地发给了我们的测试用户. 不一会,用户给我们反馈说:不行!崩了…不行,还是崩了…
我开始尝试着用下面的方案去排查是否含有16bit图或者P3格式的图片资源.P3图片导致iOS9.3以下崩溃问题排查结果发现,我们项目中并未使用不合规格的图片,排除.
后来我在CocoaChina上看到了一毛一样的崩溃提问. 好了,基本可以锁定就是由于苹果升级Xcode导致 使用Xcode打包图片资源时不兼容iOS9.0-9.2真机导致的.
用xcode10打包上线,iOS9.2系统出现闪退bug
Xcode10发布App Store,iOS9崩溃
解决方案
一番查阅之后,大家给出的方案无外乎以下方式:
老老实实用Xcode9打包发布吧;
将Assets目录下的图片资源转为文件夹存储; (几百张图片,这操作简直逆天…)
等待苹果的修复更新…
终于我们找到了苹果Xcode 10.1 beta 2 的更新日志, 在 Asset Catalog 下面我们看到下面这样一段说明:Xcode10 beta2 更新记录地址
Resolved Issues
The 40mm and 44mm wells for complications specify the correct icon sizes. (43069075, 43401397)
Resolves an issue that affected app compatibility with iOS 9.0, 9.1 and 9.2. Apps containing asset catalogs built with Xcode 10 whose deployment target was set to iOS 9.0, 9.1 or 9.2 would produce content incompatible with the runtimes of those iOS versions. Rebuilding the application with Xcode 10.1 resolves this issue. (44535967)
从更新说明来看,果然应验了之前的猜想,崩溃与Xcode10打包图片文件有关系.
解决方案显而易见, 更新Xcode10.1 beta2 重新打包就可以正常下载安装使用了, 赶紧下载安装Xcode10.1 beta2,给小姐姐打包测试, 等待了大约半个小时后小姐姐回复说: 没有闪退.
完美~ 问题终于解决了. 又一次被苹果儿子实力坑爹的崩溃,过程一波三折,好在测试小姐姐人好耐心好,帮我们完成了十几轮的测试工作,实在感谢. 正是有了这样有耐心的优质用户,我们的App才能更加完美.实在感谢~
作者:爨乡的云