美文网首页IOS开发问题收集
关于iOS 9.2.1 从App Store下载出现不规则崩溃的

关于iOS 9.2.1 从App Store下载出现不规则崩溃的

作者: 乾坤醉心尘 | 来源:发表于2017-03-24 10:25 被阅读3509次

     是否有人跟我一样,使用iOS系统9.2.1的手机,真机调试情况下,app不会出现任何崩溃,运行的顺溜顺溜的。然而,打包发布到App Store上面去的时候,用手机从App Store上面下载,运行,则出现各种崩溃,例如未运行完App的启动页就崩溃;进入之后等十几秒就崩溃;随便点击几下就崩溃等等。

    我也为这个问题苦恼了很久,始终没有找到解决办法。第三方框架也全部更新,用友盟或者本身的crash捕捉定位也定位不到,永远都报这种错误。

    后来终于在同行的帖子中也看到这种问题,所以,以下是解决办法:

    原理:在 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 文件. 解压后的目录里面会有一个包含着你的 app bundle 文件的 Payload 文件夹.

    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的资源文件名.

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

    相关文章

      网友评论

      • 捡书:6666,刚好遇见这个问题。
        356448bcb3d8:@新地球说着一口陌生腔调 没有 后面是直接找到 Assets.car 文件 打开的
        新地球说着一口陌生腔调:@t_Fly 你好 我现在执行脚本也遇到你这样的提示!请问解决了吗
        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
      • 宝锤:那么我该怎么去测试,问题到底有没有解决?
        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
      • 我嘞giaogiao:BitsPerComponent : 8 是有的, 但是DisplayGamut这个字段没有 ,是否正常呀?哪位大佬赐教一下
        星辰_羽:@至尊版创可贴 大佬解决了吗 ,我的也没DisplayGamut这个字段 ,也是9.2.1版本出问题 , 头疼
        我嘞giaogiao:不好说,因为没有对应的手机系统测试,iOS9.3系统以前才会出现这种情况
        时光凉的小贝:大佬解决了么 ,我的也有 ,我想说这个到底有木有问题哇
      • 微威:通过 “sudo xcrun --sdk iphoneos assetutil --info/path/to/a/Assets.car> /tmp/Assets.json”这个命令查找出来的都是有问题的图片吗
      • 微威:{
        "Opaque" : false,
        "Compression" : "lzvn",
        "SizeOnDisk" : 1501,
        "PixelHeight" : 60,
        "Name" : "YKXDistribution_signOrder",
        "RenditionName" : "YKXDistribution_sign@2x.png",
        "ColorModel" : "RGB",
        "Scale" : 2,
        "Idiom" : "universal",
        "DisplayGamut" : "P3",
        "Encoding" : "ARGB",
        "BitsPerComponent" : 8,
        "Image Type" : "kCoreThemeOnePartScale",
        "Colorspace" : "srgb",
        "AssetType" : "Image",
        "PixelWidth" : 60
        }这种是有问题的吗
        MNode:我也是这种图片,同问,你的解决了吗
      • SiegeLion_LCC:感谢楼主,但是还想问下 ,楼主说的步骤是 在打包之后 导出ipa文件,然后按楼主的方法,修改之后,再提交到AppStore审核吗?
        乾坤醉心尘:@SiegeLion_LCC 不是的,这个ipa文件只是协助你找到这个问题。然后你要重新打包,导出新的ipa文件,再提交审核。
      • Gu_Liang:我也遇到iOS 9.2系统无规则崩溃,现在怀疑也是这个问题引起,图片确实有一张RGB-16的,但是你说iOS 9.2以下有问题,我在iOS 8上面测试没有问题,就iOS 9.2有
      • RenJK:遇到这个问题了,专门注册一个账号来感谢你
        最好吃的长豆角:sudo xcrun --sdk iphoneos assetutil --info ./Assets.car > /tmp/Assets.json
        xcrun: error: SDK "iphoneos" cannot be located
        2017-11-23 17:17:20.988 assetutil[34506:293132] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** setObjectForKey: object cannot be nil (key: Name)'
        这是什么问题啊,急急急急急急急急
        乾坤醉心尘:@RenJK 谢谢
        乾坤醉心尘:@RenJK 哈哈,谢谢。
      • 朝晨尚未央:感谢楼主
        我们上午上架的应用也遇到了类似的问题,使用你的方法之后,成功的解决了。
        乾坤醉心尘:@shinephe 对的。
        IAMCifi:兄弟 你怎么解决的 是不是和设计说把对应的图片换掉呢?
        乾坤醉心尘:@朝晨尚未央 解决就好
      • 新地球说着一口陌生腔调:你好 我执行之后 结果是这样
        xuetianhhbdeMac-mini:XTOnlineSchool.app xuetianhhb$ sudo xcrun --sdk iphoneos assetutil --info /Users/xuetianhhb/Downloads/XTOnlineSchool 2017-08-22 09-07-57/XTOnlineSchool/Payload/XTOnlineSchool.app/Assets.car > /tmp/Assets.json
        usage: assetutil [-itspohgkMIVcTUPr] [--version] [--hostedidioms phone,pad,tv,car,watch,marketing]
        [--info=NAME] [--idiom universal/phone/pad/tv/car/watch/marketing] [--subtype integer] [--scale integer] [--display-gamut srgb/p3/all] [--deployment-target 9.0,10.0]
        [--memory integer] [--graphicsclass string]
        [--graphicsclassfallbacks string:string:..] --main-contents [filename]
        [--output output] inputfile

        -V assetutil version number
        -I<NAME> dumps the layer stack json file if the name given finds images starting with NAME. Outputfile options
        -h hosted idioms, idioms that this invocation should keep. Provide list of idioms.
        Universal is not allowed in this list
        -T compare thinning attributes 'scale=2:idiom=phone:memory=2:graphicsclass=MTL1,2/scale=2:idiom=phone:memory=1:graphicsclass=MTL2,2'
        -P generate thinning parameters
        -U update bitmap index
        -c set the filename given as the main-contents Assets car file to be used in name lookup

        Remaining arguments indicate which device traits to keep in the car file.
        Non-matching assets will be thinned out and removed.
        乾坤醉心尘:这个是说,你的assets文件的路径有问题?你仔细看看,那个路径下面有没有asset的文件?
      • 夜之海澜:9.2.1是一个有毒的系统吗?这个问题捯饬了两天,膜拜大神,但是还是不是很清楚原因,望大神指点! 16位图或者[图片显示模式γ值为'P3'] 这两个是什么意思呢
      • 苏东没有坡:楼主请问如果是16位的图片解出来的json文件 DisplayGamut对应的值是什么?
        煮石散人:"BitsPerComponent" : 16
      • coderHuang: sudo xcrun --sdk iphoneos assetutil --info/path/to/a/Assets.car > /tmp/Assets.json
        > 左边少了个空格
        coderHuang:感谢分享
      • ba801084d050:我也遇到了这个问题,感谢大神,客户6s刚好就是9.2.1的版本:sweat:
        乾坤醉心尘:@蔡先森不温柔 :+1:
      • 云上月:仰望,崇拜。。大神:smile:
        乾坤醉心尘:@孤冷月霜 好喜欢你哦!:heart_eyes: :wink:

      本文标题:关于iOS 9.2.1 从App Store下载出现不规则崩溃的

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