美文网首页
iOS 9.3以下 Assets奔溃问题

iOS 9.3以下 Assets奔溃问题

作者: 薄凉_简书 | 来源:发表于2018-11-12 16:56 被阅读23次
    今天遇到一个 Assets奔溃问题的问题,记录一下
    9      UIKit    0x0000000188309994  __98-[_UIAssetManager imageNamed:scale:idiom:subtype:cachingOptions:sizeClassPair:attachCatalogImage:]_block_invoke + 424 + 8853908 
    10  UIKit   0x0000000188309734  -[_UIAssetManager imageNamed:scale:idiom:subtype:cachingOptions:sizeClassPair:attachCatalogImage:] + 212 + 8853300 
    11  UIKit   0x0000000188309f18  -[_UIAssetManager imageNamed:withTrait:] + 528 + 8855320 
    12  UIKit   0x0000000187ea3c5c  _UIImageWithNameAndTraitCollection + 96 + 4242524 
    13  UIKit   0x0000000187ac6220  _UIImageWithName + 48 
    
    百度原因:

    如果你的图片资源文件里有16位图或者图片显示模式为P3,并且Deployment Target是iOS9.3以下的就会出现这个问题。

    定位问题图片:

    1.导出项目ipa包
    2.解压:修改后缀名.ipa为.zip后直接解压该文件
    3.打开终端进入Payload文件夹,并检索Assets.car

    find . -name 'Assets.car'
    

    4.使用 assetutil 命令导出图片的信息存储到Assets.json文件中

    sudo xcrun --sdk iphoneos assetutil --info ./Assets.car > ./Assets.json
    
    网上还有下面这种方法,试验后没有生成Assets.json文件
    sudo xcrun --sdk iphoneos assetutil --info ./Assets.car > /tmp/Assets.json
    

    5.打开生成的Assets.json文件,查找含有”DisplayGamut” : “P3”, “Encoding” : “ARGB-16″的内容。这个对应的Name就是出现问题的图片了
    6.不想自己改图片的,直接扔给美工。

    最新解决方案问题描述:(来自网友)

    XCode 10打包的App在iOS 9上Crash(EXC_BAD_ACCESS)。

    原因:App Store的Bug,上传后的IPA经过App Store处理后,加载assets中的图在iOS 9上会Crash。

    解决方案三选一:

    1、切回到XCode 9.4打包,前提是你没有用到一些iOS 12的新特性。
    2、弃用Assets,把里面的图(除了icon和launch image)拖拽到项目里,按照普通图片的方式使用。
    3、等待Apple修复(Xcode 10.1 beta 2已修复)。

    相关文章

      网友评论

          本文标题:iOS 9.3以下 Assets奔溃问题

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