分享

9.3版本一下的一个诡异的闪退bug

 叹落花 2018-01-03

大致上的原因是:iOS 线上版本图片资源格式的问题导致的闪退      

具体的情况与解决方法如下:

最近上架的app出现了一个诡异的BUG 有多诡异呢 这么说吧 之前公司测试的时候没有任何问题  然后上线了之后 公司有个9.2系统的5S然后就各种闪退 启动了之后 点击tabbar中的任意一个 就会高概率的出现闪退现象  项目中有接入友盟统计 也用符号表查了下崩溃原因  错误根本没办法定位 很可惜啥都没发现。

于是就各种在网上找相关的资料喽 终于功夫不负有心人 找到了问题的原因所在:

图片资源的问题
导致这种问题的原因是:在 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。
3.解压该 .zip 文件。
4 打开终端病切换到你的app的Payload文件夹下的 .app bundle 文件夹内。

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 回车之后会让你输入密码 输入密码回车即可

7.open /tmp/Assets.json     打开上一步生成的 /tmp/Assets.json 文件并查找包含有 “DisplayGamut": “P3” 或者相关的内容. 这段json的"Name"字段对应的值就是16位或显示的γ值为P3的资源文件名.
以下这种就是正常的  "BitsPerSample" : 8,     "DisplayGamut" : "sRGB",
{
        "Compression" : "lzvn",
        "BitsPerSample" : 8,
        "LayoutDirection" : "0 - Horizontal",
        "AssetType" : "Image",
        "ColorModel" : "RGB",
        "Name" : "nav_use_p",
        "PixelWidth" : 360,
        "Graphics" : "GLES2,0",
        "Subtype" : 0,
        "PixelHeight" : 112,
        "SizeClass Horizontal" : "universal",
        "EdgeInsets" : "top:0 left:0 bottom:0 right:0",
        "Scale" : 3,
        "Memory" : "512MB",
        "Opaque" : false,
        "DisplayGamut" : "sRGB",
        "Idiom" : "universal",
        "Encoding" : "ARGB",
        "Image Type" : "kCoreThemeOnePartScale",
        "SizeClass Vertical" : "universal"
    },

以下这种情况就是不正常的  "BitsPerSample" : 16,    "DisplayGamut" : "P3",
{
        "Compression" : "lzvn",
        "BitsPerSample" : 16,
        "LayoutDirection" : "0 - Horizontal",
        "AssetType" : "Image",
        "ColorModel" : "RGB",
        "Name" : "iPhone6Plus",
        "PixelWidth" : 1242,
        "Graphics" : "GLES2,0",
        "Subtype" : 0,
        "PixelHeight" : 2280,
        "SizeClass Horizontal" : "universal",
        "EdgeInsets" : "top:0 left:0 bottom:0 right:0",
        "Scale" : 2,
        "Memory" : "512MB",
        "Opaque" : true,
        "DisplayGamut" : "P3",
        "Idiom" : "universal",
        "Encoding" : "ARGB-16",
        "Image Type" : "kCoreThemeOnePartScale",
        "SizeClass Vertical" : "universal"
    },
  
全局搜索含有   "BitsPerSample" : 16的图片 在工程中找到所对应的图片 让UI重新切图 替换掉即可  新包已经把俩张问题图片替换掉了 用9.2系统 iphone试了下 完全没有问题 OK 问题解决 








    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多