文档章节

P3色域图片crash问题

Jerod
 Jerod
发布于 2017/09/12 11:09
字数 569
阅读 425
收藏 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"

© 著作权归作者所有

共有 人打赏支持
Jerod
粉丝 5
博文 30
码字总数 9458
作品 0
普陀
iOS工程师
私信 提问
图片和图形之扩展色彩内容增强图形(20)

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

lichong951
05/26
0
0
iOS 线上版本图片资源格式的问题导致的闪退

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

奥卡姆剃须刀
2017/05/01
0
0
如何正确的在微信H5棋牌斗牛出租平台中的UI图中取色

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

H5牛牛棋牌
01/23
0
0
Android 开发者和设计师必须了解的颜色知识

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

谷歌开发者
2017/12/26
0
0
如何正确的从UI图中取色

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

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

没有更多内容

加载失败,请刷新页面

加载更多

ZooKeeper命令大全

创建节点 # 创建节点,-s表示顺序节点,-e表示临时节点,默认是持久节点create [-s] [-e] path data acl # 示例create /zk-book 123 查看节点 ls path [watch] # 示例ls /zk-book 获取...

爱宝贝丶
19分钟前
1
0
QLExpress基本语法

QLExpress基本语法 一、背景介绍 由阿里的电商业务规则、表达式(布尔组合)、特殊数学公式计算(高精度)、语法分析、脚本二次定制等强需求而设计的一门动态脚本引擎解析工具。 在阿里集团有...

xiaomin0322
20分钟前
0
0
Elasticsearch节点角色类型node.master和node.data说明s

一般地,ElasticSearch集群中每个节点都有成为主节点的资格,也都存储数据,还可以提供查询服务。这些功能是由两个属性控制的(node.master和node.data)。默认情况下这两个属性的值都是tru...

傲娇字符
35分钟前
5
0
rem的使用

(function (doc, win) { var docEl = doc.documentElement var resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize' var recalc = function () { var cl......

Js_Mei
42分钟前
1
0
idea 删除代码的注释

搜索栏使用 正则表达式搜索 (/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/|[ \t]*//.*) 会搜索出来所有注释的代码 用空格replace替换掉就可以了。 或者搜索 (/\*([^*]|[\r\n]|(\*+([^*/]|[\r\...

时刻在奔跑
45分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部