美文网首页
在iOS系统9.2以下,ipa文件因图片问题引起崩溃问题

在iOS系统9.2以下,ipa文件因图片问题引起崩溃问题

作者: 清海浮生 | 来源:发表于2017-11-06 11:41 被阅读0次

    工程在Xcode上直接跑没有问题,但是打包成ipa文件之后,会在手机系统在9.2以下的时候,会出现崩溃,且无法定位崩溃位置时,可以查看一下工程中是否包含有不符格式的图片资源。

    问题:

    导致这种问题的原因是:在 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 文件夹.

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

    cd  path/to/Payload/XXX.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 ./Assets.car> /tmp/Assets.json

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

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

    找到类似上边的图片 都是有问题的,图片名就是上面截图字典中的name 然后去你的xcode中 找到这些图片,删除了然后让UI在做图

    就可以了。

    相关文章

      网友评论

          本文标题:在iOS系统9.2以下,ipa文件因图片问题引起崩溃问题

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