场景是这样的,同事说他遇到一个大坑,如果你的.ipa的包中包含有16-bit或者P3格式的图片,会有一个很蛋疼的问题。使用Xcode8打包上线,iOS9.3以下版本的手机,运行一会就随机在任何页面崩溃了。
这个时候
你用Xcode直接刷机器<iOS9.3以下版本>测试,木有问题,
模拟器<iOS9.3以下版本>运行木有问题,
打包传到蒲公英或者其他途径,安装到真机上<iOS9.3以下版本>,木有问题。
但是,但是,就是上线之后有问题了。
看到这,我就懵逼了。
不过幸好,使用testFlight安装在iOS9.3以下版本还是能够复现的。
1、将.ipa的后缀名修改成为.zip
image.png2、显示包内容找到 Assets.car
image.png3、终端命令进行解析
sudo xcrun —sdk iphoneos assetutil —info /Users/morris/********/Payload/Demo.app/Assets.car > /tmp/Assets.json
后面的文件路径可以写其他的。
4、找到生成的 <code>/tmp/Assets.json</code>
image.png image.png全局搜索关键字 <code> P3</code>,和关键字 <code>BitsPerSample" : 16</code>
如果找到的话,根据关键字的name在项目中找到该图片。
根据相关的比较,图片的格式是这样的:
image.png两张图片都是png格式的图片。
注意那个颜色空间,UI平常给我们切的图一般的颜色控件是RGB的。
实际图片进行对比:
灰度图:
image.png
灰度图转化成RGB图:
image.png
转化成RGB之后的图片:
image.png
如有失误请各位路过大神即时指点,或有更好的做法,也请指点一二。