有时候突然遇到用户反馈手机(ios9.1,9.2)会闪退,而且报错信息一点也收集不到。自己测试有时候也找不到原因,而且经过真机测试,发现ios9.1,9.2并没有这个问题出现。但是只要上传到appStore,下载到ios9.1,9.2,就会闪退。
经过查阅网上的大量资料,基本可以定位这个错误是因为你工程中添加了错误格式的图片,不管你调不调用这个图片,只要存在系统中就会闪退。下面讲解一下排查方法:
1.找到导出项目的ipa文件;
2.对该ipa文件使用解压工具解压,或者直接修改后缀名.ipa为.zip后直接解压该文件;
3.解压后会有里面会有两个文件:BCSymbolMaps和Payload,点击Payload文件里面有你的APP文件;
4.打开终端,进入到你的APP的Payload文件夹下的.app bundle文件夹内(打开终端,输入 cd 拖入Payload文件夹里面的文件,回车。
cd /Users/apple/Desktop/your/Payload/your.app);
5.在终端里,用find命令找到Assets.car文件(find . -name 'Assets.car');
6.用assetutil 命令找到任何包含着 16-bit or P3 的资源文件,对每个Assets.car文件执行一句命令:sudo xcrun --sdk iphoneos assetutil --info /Users/apple/Desktop/a/Assets.car > /tmp/Assets.json (/Users/apple/Desktop/a/Assets.car 替换为Assets.car文件的路径,如果你的终端位置还是在bundle下直接可以执行这句即可:xcrun --sdk iphoneos assetutil --info ./Assets.car >/tmp/Assets.json);
7.打开Assets.json文件,在终端中输入 open /tmp/Assets.json;
8.开始查找"DisplayGamut" : "P3" 如果没找到,可以试试 P3, BitsPerSample,然后记下图片的名称;
9.修改图片颜色描述文件,在你项目里面找到图片,然后在finder中用预览打开找到的图片,然后指派描述文件为sRGB,保存并关闭。
网友评论