文档章节

P3色域图片crash问题

_柳大官人
 _柳大官人
发布于 2017/09/12 11:09
字数 569
阅读 83
收藏 0
点赞 0
评论 0

问题描述:

电脑上直接给手机装的包一切OK,但是App Store商店下载的包在9.0.2和9.2系统上一点就闪退,要么进了应用后随便点点就闪退.

原因排查:

由于Release版的包关闭了日志,在控制台难以看到有用的信息.所以,只能去Xcode看iTunes统计的crash日志.

打开Xcode->Window->Organizer->Crashes,左边App Store选择对应版本,等待日志下载完成.

找到crash的地方.可以看到crash的用户的系统iOS9.2和型号iPhone 6s Plus.

选中crash那行,如果不是私有API的话右边会有一个箭头,点击箭头会跳转到代码中crash的地方,这样就可以找到问题所在了.

但如果是私有API就没有这箭头了,这时候点击右边的Open in Project,然后选择对应的项目,这时候可以在项目中看到crash地方的堆栈调用;

-[CUIStrucTuredThemeStore renditionWithKey:usingKeySignature:] 这是个苹果私有API,查寻资料发现此API报错指向图片色域问题.

解决方案:

从iTunes下载项目的 ipa 并解压, 找到 Payload 中的 .app 文件, 显示包内容.

找到 Assets.car 文件, copy 到 Work 路径下,在终端执行命令 

sudo xcrun --sdk iphoneos assetutil --info ./Assets.car > asset.json

JerodMac:~ jerod$ cd /Users/jerod/Documents/Work 
JerodMac:Work jerod$ ls
Assets.car
JerodMac:Work jerod$ sudo xcrun --sdk iphoneos assetutil --info ./Assets.car > asset.json
Password:
JerodMac:Work jerod$ 

密码是电脑的登录密码.

执行完成后 Work 文件下会生成 asset.json 文件, 选择文本方式或Sublime方式打开, 查询"DisplayGamut" : "P3"

ios9.3以下系统不支持 P3 色域的图片, 需要使用 "DisplayGamut" : "sRGB" 即RGB 色域的图.

接下来将这张图片删除或者重做成 RGB.问题解决.

 

补充 : 在查阅资料时发现, 很多资料都提到过在项目中运行一个脚本将P3图片进行转换, 由于此种方法朕没有实际验证过, 所以只做个摘录

#!/bin/bash
DIRECTORY=$1
echo "----Passed Resources with xcassets folder argument is <$DIRECTORY>"
echo "----Processing asset:"

find "$DIRECTORY" -name '*png' -print0 | while read -d $'\0' file; 
do 
    echo "---------$file"
    sips -m "/System/Library/Colorsync/Profiles/sRGB Profile.icc" "$file" --out "$file"
done

echo "----script successfully finished"

© 著作权归作者所有

共有 人打赏支持
_柳大官人
粉丝 5
博文 20
码字总数 8192
作品 0
普陀
iOS工程师
iOS 线上版本图片资源格式的问题导致的闪退

近段刚刚上传了app新版本 ,上线前也是各种真机调试,包括公司一位同事的iOS9.2系统的iPhone6s , 一点问题都没有 可是两天后审核通过了 我们公司其他人下载app都非常流畅 ,也没有闪退的情况...

奥卡姆剃须刀 ⋅ 2017/05/01 ⋅ 0

图片和图形之扩展色彩内容增强图形(20)

原文 概要 除了标准RGB(sRGB)之外,Android 8.0(API级别26)还引入了对额外色彩空间的色彩管理支持,以 在具有兼容显示的设备上呈现图形。有了这种支持,您的应用程序可以通过Java或本地代...

lichong951 ⋅ 05/26 ⋅ 0

如何正确的在微信H5棋牌斗牛出租平台中的UI图中取色

在移动开发过程中,从微信H5棋牌斗牛出租平台(h5.fanshubbs.com)的UI图上获取颜色是日常开发中常有的事。不过从图片获取颜色也有很多种操作方式,很多人在日常中取到的并不是“正确”的值。 ...

H5牛牛棋牌 ⋅ 01/23 ⋅ 0

Android 开发者和设计师必须了解的颜色知识

在近期发布的 Oreo 版本中,Android 开始获得颜色管理的支持,这有助于在不同的设备上对颜色进行校准。随着此次更新的到来,Android 设备现在可以显示 sRGB 色域之外的颜色。如果您不熟悉颜色...

谷歌开发者 ⋅ 2017/12/26 ⋅ 0

如何正确的从UI图中取色

在移动开发过程中,从UI图上获取颜色是日常开发中常有的事。不过从图片获取颜色也有很多种操作方式,很多人在日常中取到的并不是“正确”的值。 上策:避免从图片中取值 最好的情况就是不需要...

没故事的卓同学 ⋅ 2017/10/30 ⋅ 0

O-MG,Google 发布 Android O 开发者预览版!

今天,Google 对外推出了 Android O (Android 8.0)操作系统的首个开发者预览版,并可供下载。同时,Google 也表示该版本还有很多性能和稳定性的工作待完成,不建议消费者日常使用。 What's...

王练 ⋅ 2017/03/22 ⋅ 30

客户端Bug优先级定义

Priority: 所提交的bug应该被修复的优先级。共分为四级,分别为P0、P1、P2、P3, 其中P0最高,P3最低。P0&P1的bug必须要在上线前完全修复。详细说明如下: Pri=0 表示block了几乎大部分相关...

AwesomeQA ⋅ 2016/08/05 ⋅ 0

NA端测试规范

一、 测试流程图 二、bug等级标准 Priority: QA提交的bug应有修复优先级,共分为四级,分别为P0、P1、P2、P3, 其中P0最高,P3最低。P0&P1的bug必须要在上线前完全修复。详细说明如下: P0...

AwesomeQA ⋅ 2016/08/09 ⋅ 0

iOS开发 如何适配iOS10?

1.Notification(通知) 自从被引入之后,苹果就不断的更新优化,但这些更新优化只是小打小闹,直至现在iOS 10开始真正的进行大改重构,这让开发者也体会到的易用,功能也变得非常强大。 iOS ...

pascaling ⋅ 2016/09/18 ⋅ 5

Xcode9.2 + iOS8.1环境下,本地图标显示异常(错乱)

前言 前两天升级Xcode到9.2,编写并自测程序一段时间没有发现什么异常问题,就在前两天用了我的小苹果IPhone 5 系统版本iOS8.1.1的自测了一边我的程序,让我大吃一惊项目中本地图片显示异常,...

博行天下 ⋅ 2017/12/29 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

【elasticsearch】 随笔 Date datatype

一。时间类型的本质 首先json是没有时间类型的,对于es来说,时间类型的标示可以是下面三种情况 1.一个时间格式的字符串,如:"2014-11-27T08:05:32Z","2015-01-01" or "2015/01/01 12:10:3...

xiaomin0322 ⋅ 29分钟前 ⋅ 0

阿里云资源编排ROS使用教程

阿里云资源编排ROS详细内容: 阿里云资源编排ROS使用教程 资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、...

mcy0425 ⋅ 32分钟前 ⋅ 0

适配器设计模式

1、适配器模式 把一个类的接口变换成客户端所期待的另一种接口 使原本因接口不匹配而无法在一起工作的两个类能够在一起工作 分为类的适配器模式和对象的适配器模式 2、类适配器模式 类的适配...

职业搬砖20年 ⋅ 36分钟前 ⋅ 0

npm操作报错 _stream_writable.js:61

有一天 不知道什么原因(估计和node的版本有关),无论你做什么npm的操作 都会报错/usr/local/lib/node_modules/npm/node_modules/readable-stream/lib/_stream_writable.js:61 这时候只要执...

lilugirl ⋅ 40分钟前 ⋅ 0

Eclipse安装插件的几种方式

Eclipse魅力之一就是支持可扩展的插件,来丰富自身的功能,这种方式也是建立在开源思想之上的。具体使用什么方式去安装插件,要看我们拿到的是什么。 1. 拿到的是一串URL,如http://subclips...

GordonNemo ⋅ 42分钟前 ⋅ 0

div图片叠加

css实现代码如下: <div style="position: relative;"><!--这个层为外面的父层,需设置相对位置样式--> <div style="position: absolute;"><!--子层,需设置绝对位置样式--> <i......

niithub ⋅ 44分钟前 ⋅ 0

作用域slot

如果父组件需要使用子组件中的内容怎么办,比如父组件需要控制子组件的显示 <div id="root"><child><template slot-scope="props"><h1>{{props.item}} <div>编辑</div></h1><......

金于虎 ⋅ 46分钟前 ⋅ 1

HongHu commonservice-eureka 项目构建过程

上一篇我们回顾了关于 spring cloud eureka的相关基础知识,现在我们针对于HongHu cloud的eureka项目做以下构建,整个构建的过程很简单,我会将每一步都构建过程记录下来,希望可以帮助到大家...

明理萝 ⋅ 49分钟前 ⋅ 1

xml和对象的相互转化

@Data//setter和getter方法,toString和equals,hashcode方法@EqualsAndHashCode//代表重写equals和hashcode方法@XmlAccessorType(XmlAccessType.FIELD)public class Classroom {@X......

拐美人 ⋅ 49分钟前 ⋅ 0

tableView cell的高度 分组头部尾部的高度 自适应

@property (nonatomic) CGFloat rowHeight; // default is UITableViewAutomaticDimension@property (nonatomic) CGFloat sectionHeaderHeight; // default is UITableViewA......

娜一片蓝色星海 ⋅ 50分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部