美文网首页
BUG记录:16bit图片导致的iOS9.3以下系统出现闪退

BUG记录:16bit图片导致的iOS9.3以下系统出现闪退

作者: 生亦何哀 | 来源:发表于2018-06-22 01:09 被阅读0次

    16bit图片导致的iOS9.3以下系统出现闪退【iOS9.3以下仅支持8bit图片】

    导致这种问题的原因是:在 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 文件(解压后是Payload文件夹)

    4、在终端输入cd 并把Payload文件夹内的app文件拖到终端,然后回车。

    5、用 find 命令定位到 Assets.car 文件 , 在终端输入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的图片 在工程中找到所对应的图片【用PS工具将16bit转为8bit操作步骤:打开要转换的图片 - 图像 - 模式 - 选择8bit - 保存】

    相关文章

      网友评论

          本文标题:BUG记录:16bit图片导致的iOS9.3以下系统出现闪退

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