美文网首页iOS精英班开发遇到的问题iOS学习专题
iOS 线上版本图片资源格式的问题导致的闪退

iOS 线上版本图片资源格式的问题导致的闪退

作者: 奥卡姆剃须刀 | 来源:发表于2017-05-01 15:35 被阅读2437次

近段刚刚上传了app新版本 ,上线前也是各种真机调试,包括公司一位同事的iOS9.2系统的iPhone6s , 一点问题都没有 可是两天后审核通过了 我们公司其他人下载app都非常流畅 ,也没有闪退的情况,唯独这个同事的iOS 9.2系统的iPhone6s 各种闪退 , 集成的有友盟统计 看了崩溃原因根本无法定位 都是这种错误 这是在友盟统计上看到的

Paste_Image.png

点击去看详情


Paste_Image.png

根本无法定位
就在网上开始翻阅资料 最后找到了类似的问题
图片资源的问题
导致这种问题的原因是:在 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.然后把该ipa文件修改后缀名.ipa 为 .zip. 这时候就变成了一个.zip的压缩包了

3 解压该 .zip 文件. 解压后的目录里面会有一个包含着你的 app bundle 文件的 Payload 文件夹.

Paste_Image.png

4 打开终端病切换到你的app的Payload文件夹下的 .app bundle 文件夹内,形式如下:

cd path/to/Payload/your.app

5 用 find 命令定位到 Assets.car 文件 .app bundle , 形式如下:

find . -name 'Assets.car'

6 使用 assetutil 命令找到任何包含着 16-bit or P3 的资源文件, 对每个 Assets.car 之行以下命令 :

sudo xcrun --sdk iphoneos assetutil --info/path/to/a/Assets.car> /tmp/Assets.json

注:这里的/path/to/a/Assets.car指的是Assets.car的路径,不要直接复制!!!使用上一步find命令的结果。

7 打开上一步生成的 /tmp/Assets.json 文件并查找包含有 “DisplayGamut": “P3” 或者相关的内容. 这段json的"Name"字段对应的值就是16位或显示的γ值为P3的资源文件名.

Paste_Image.png

执行完上述的命令就能看到下边的界面了

这个是正常的


Paste_Image.png

看下边的这个图片就有问题了

Paste_Image.png

找到类似于上边的图片 都是有问题的 然后去你的xcode中 找到这些图片 我是直接删除了然后让UI在做图
就可以了
希望可以帮到大家 这个问题太隐晦了 ~~~

相关文章

网友评论

  • 约德尔人郭敬明:作者你好,我没有DisplayGamut这个字段,请问是什么原因?
  • 356448bcb3d8:-[CUIThemeRendition newImageFromCSIDataSlice:ofBitmap: usingColorspace:] Unsupported pixel format in CSI got 8
    Unable to create unsliced image from csi bitmap data.
    carutil: couldn't materialize rendition '(null)' skipping

    报错了 执行其中一个目录的时候
  • Java会一点:作者应该把原文链接贴上的
    奥卡姆剃须刀:@iOS的搬运工 这个当时确实借鉴了很多资料,不过是自己真真实实亲身经历的,也仅仅是为了分享
  • 0d3fa04c9199:厉害了 我这边也是有俩张8位的图 其他都是16位的图 而且是启动图
  • 水马101:但是为什么广色域的图片会引起崩溃呢?有没有深入研究的
    奥卡姆剃须刀:这个只能说是苹果系统规定的吧...
  • 卡卡罗忒:CoreUI: couldn't matrialize rendition '(null)' skipping 写json的那句,输出这个
    奥卡姆剃须刀:这个应该是路径不对吧
  • 回希:问下,假如有p3图片不是放在Images.xcassets 里面的话,会不会检测不到
    回希:@奥卡姆剃须刀 你们的这种闪退,是那种一启动就闪退。还是使用一会闪退
    回希:@奥卡姆剃须刀 好的
    奥卡姆剃须刀:@回希 你可以换一下路径试试,文中写的是asset的路径:smile:
  • 小小纳兰:1 导出ipa包 是导出APPSTORE的么?还是真机调试的
    奥卡姆剃须刀:真机调试的
  • ManoBoo:不错~ 刚帮公司解决了一个Bug,谢谢分享
    奥卡姆剃须刀:@尼古拉斯超仔 哈哈 谢谢啦
    尼古拉斯超仔:大神666,找了半个月,你的一篇文章帮解决了。
    奥卡姆剃须刀:谢谢支持:smile:

本文标题:iOS 线上版本图片资源格式的问题导致的闪退

本文链接:https://www.haomeiwen.com/subject/bmnftxtx.html