9.3系统以下的手机,从AppStore下载的App莫名崩溃

从AppStore下载的App,出现莫名崩溃的原因,第三方抓Bug也抓不到,后来终于在同行的帖子中也看到这种问题,所以,以下是解决办法:
原理:在 Xcode 8 中,当你资源文件中“含有16位图”或者“图片显示模式γ值为‘P3’”且iOS targets设定为iOS 9.3以下就会出现这个问题。如果你的app需要支持广色域显示的话,那你必须得把target设置成iOS 9.3+,相反,如果你的app不需要支持广色域且你想兼容 iOS 9.3 以下的系统,你就得把所有的16位的或者显示模式为‘P3’图片全都替换成8位模式的SRGB颜色的图片。


步骤:
1.打包ipa文件

2.用终端找到app路径,cd,拖入app文件

3.用 find 命令定位到 Assets.car 文件,形式如下:
find . -name ‘Assets.car’
(注意:显示包内容,cd拖入Assets.car文件,显示找不到路径)

4.使用 assetutil 命令找到任何包含着 16-bit or P3 的资源文件, 对每个 Assets.car 之行以下命令 :
sudo xcrun –sdk iphoneos assetutil –info/path/to/a/Assets.car > /tmp/Assets.json
(sudo xcrun –sdk iphoneos assetutil –info Assets.car > /tmp/Assets.json 赋值这个)
注:这里的/path/to/a/Assets.car指的是Assets.car的路径,不要直接复制!!!使用上一步find命令的结果。

5.打开上一步生成的 /tmp/Assets.json 文件并查找包含有 “DisplayGamut”: “P3” 、“BitsPerComponent” : “8”或者相关的内容。 这段json的”Name”字段对应的值就是16位或显示的γ值为P3的资源文件名,找到删除或者替换。


以下是完成图片,再提醒,注意这个info /path/to/a/Assets.car,按照我的终端命令来就可以的了。希望各位开发者能够轻松解决这个问题。

9.3系统以下的手机,从AppStore下载的App莫名崩溃_第1张图片
9.3系统以下的手机,从AppStore下载的App莫名崩溃_第2张图片


参考文档:http://www.jianshu.com/p/4bc0c5b3b597

你可能感兴趣的:(iOS技术博客)