//www.greatytc.com/p/b13e1e441116
截止到2017年9月,iOS9的使用率只有9%,现在iOS11已经发布了一段时间,然而这不到9%的用户却给我带来了新问题ᕙ(⇀‸↼‵‵)ᕗ
通过各种渠道找到一部系统为iOS9的6sP ,然后开始了测试,连接电脑真机测试,无论怎么操作都没有崩溃…然后打包上传蒲公英测试,同样没有崩溃。下载模拟器再测试,没有崩溃。但是在App Store 下载的就是点几下就闪退,甚至打开就闪退。
接入了友盟的错误统计,解析崩溃日志,发现崩溃的地方都是main.m.
没办法了,各方查资料,
如果你的图片资源文件里有16位图或者图片显示模式为P3,并且Deployment Target是iOS9.3以下的就会出现这个问题。(”DisplayGamut” : “P3”, “Encoding” : “ARGB-16″)
是不是图片的问题呢,然后照下面的方法找到了这样两张图片可能会是吧,也只能排除这种可能试一下了。
进入正题
图片问题怎么查找解决?
1.首先要将项目打包,得到 .ipa 文件。
2.将得到的.ipa 文件的后缀改为 .zip 。
3.解压 .zip,得到一个文件夹 Payload,里面包含另一个文件。
4.打开终端 ,切换到Payload 里面的文件,cd 然后把那个文件拖到终端里 回车。
然后就会看到终端里出现了下面这句话:
cd path/to/Payload/your.app
5.用find 命令 定位Assets.car 文件:终端输入 find . -name 'Assets.car'
然后应该会看到:
./Assets.car
6.对每个 Assets.car 执行以下命令 : sudo xcrun --sdk iphoneos assetutil --info /path/to/a/Assets.car > /tmp/Assets.json 。
/path/to/a/Assets.car 替换为Assets.car文件的路径, 如果你终端的位置依然在bundle下则直接执行: xcrun --sdk iphoneos assetutil --info ./Assets.car >/tmp/Assets.json
7.执行完上面的命令后就要打开Assets.json ,执行:open /tmp/Assets.json。
然后就打开了一个新文件,在里面查找 ”DisplayGamut” : “P3”, “Encoding” : “ARGB-16″ 这些关键字,如果发现有这些,那么恭喜你,可能找到崩溃原因了。(UI的锅也只能你来背了,反正早就是背锅侠了)
修改图片的方法:
1.让UI重新切图给你。(这个方法最简单,还有可能可以甩锅)
2.自己修改:
这张图片就修改好了。