iOS巅峰之系统iOS9.3以下从App Store下载的应用就奔溃

1 篇文章 0 订阅
1 篇文章 0 订阅

一、前言

如果你刚刚升级了Xcode8,而你的项目的Deployment Target是iOS 9.3以下,运行iOS8的时候过了几十秒后crash到main函数,出现EXC_BAD_ACCESS,或者崩溃到imageNamed:,或者每次编译运行随机崩溃到某个地方。那么恭喜你,你读完这个文章你可能就解决了。

二、崩溃原因

在Xcode8中,如果你的图片资源文件里有16位图或者图片显示模式为P3,并且Deployment Target是iOS9.3以下的就会出现这个问题。(话说我公司的项目里面就出现了一个小按钮,导致了这次崩溃,不知道设计师是怎么弄出来的这个特殊图片…)如果你的App需要支持wide color functionality,那你就必须设置Deployment Target为iOS9.3以上。如果你的APP不需要支持wide color functionality并且你希望兼容iOS老版本,那么你需要将所有16-bit or P3 assets的图片转换为8-bit sRGB assets

三、定位到问题图片

1.找到导出项目的ipa文件;
2.对该ipa文件使用解压工具解压,或者直接修改后缀名.ipa为.zip后直接解压该文件;
3.解压后会有里面会有Payload文件夹,点击Payload文件里面有你的APP文件;
4.打开终端,进入到你的APP的Payload文件夹下的.app bundle文件夹内(打开终端,输入 cd 拖入Payload文件夹里面的文件,回车cd 文件目录/Payload/your.app);
5.在终端里,用find命令找到Assets.car文件(find . -name 'Assets.car'
6.使用 assetutil 命令导出图片的信息存储到Assets.json文件中
sudo xcrun --sdk iphoneos assetutil --info /path/to/a/Assets.car > /tmp/Assets.json
注意:/path/to/a/Assets.car 替换成find . -name 'Assets.car'获取到的路径
7.前往文件夹 打开刚才生成的Assets.json文件,查找含有”DisplayGamut” : “P3”, “Encoding” : “ARGB-16″的内容。这个对应的Name就是出现问题的图片了。

Name:是图片的名字, 将找到的图片发给UI重新设计就ok了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值