iOS9.3-闪退BUG-图片资源格式的问题

2023-12-10 11:20

本文主要是介绍iOS9.3-闪退BUG-图片资源格式的问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近上架的app出现了一个诡异的BUG 有多诡异呢 这么说吧 之前公司测试的时候没有任何问题  然后上线了之后 公司有个9.2系统的5S然后就各种闪退 启动了之后 点击tabbar中的任意一个 就会高概率的出现闪退现象  项目中有接入友盟统计 也用符号表查了下崩溃原因  错误根本没办法定位 很可惜啥都没发现。

于是就各种在网上找相关的资料喽 终于功夫不负有心人 找到了问题的原因所在:

图片资源的问题

导致这种问题的原因是:在 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 文件。

4 打开终端病切换到你的app的Payload文件夹下的 .app bundle 文件夹内。

5 用 find 命令定位到 Assets.car 文件 .app bundle , 形式如下:   find . -name 'Assets.car'

6 使用 assetutil 命令找到任何包含着 16-bit or P3 的资源文件, 对每个 Assets.car 执行以下命令 : sudo xcrun --sdk iphoneos assetutil --info Assets.car> /tmp/Assets.json 回车之后会让你输入密码 输入密码回车即可

7.open /tmp/Assets.json     打开上一步生成的 /tmp/Assets.json 文件并查找包含有 “DisplayGamut": “P3” 或者相关的内容. 这段json的"Name"字段对应的值就是16位或显示的γ值为P3的资源文件名.

以下这种就是正常的  "BitsPerSample" : 8,     "DisplayGamut" : "sRGB",

{

"Compression" : "lzvn",

"BitsPerSample" : 8,

"LayoutDirection" : "0 - Horizontal",

"AssetType" : "Image",

"ColorModel" : "RGB",

"Name" : "nav_use_p",

"PixelWidth" : 360,

"Graphics" : "GLES2,0",

"Subtype" : 0,

"PixelHeight" : 112,

"SizeClass Horizontal" : "universal",

"EdgeInsets" : "top:0 left:0 bottom:0 right:0",

"Scale" : 3,

"Memory" : "512MB",

"Opaque" : false,

"DisplayGamut" : "sRGB",

"Idiom" : "universal",

"Encoding" : "ARGB",

"Image Type" : "kCoreThemeOnePartScale",

"SizeClass Vertical" : "universal"

},

以下这种情况就是不正常的  "BitsPerSample" : 16,    "DisplayGamut" : "P3",

{

"Compression" : "lzvn",

"BitsPerSample" : 16,

"LayoutDirection" : "0 - Horizontal",

"AssetType" : "Image",

"ColorModel" : "RGB",

"Name" : "iPhone6Plus",

"PixelWidth" : 1242,

"Graphics" : "GLES2,0",

"Subtype" : 0,

"PixelHeight" : 2280,

"SizeClass Horizontal" : "universal",

"EdgeInsets" : "top:0 left:0 bottom:0 right:0",

"Scale" : 2,

"Memory" : "512MB",

"Opaque" : true,

"DisplayGamut" : "P3",

"Idiom" : "universal",

"Encoding" : "ARGB-16",

"Image Type" : "kCoreThemeOnePartScale",

"SizeClass Vertical" : "universal"

},

全局搜索含有   "BitsPerSample" : 16的图片 在工程中找到所对应的图片 让UI重新切图 替换掉即可  新包已经把俩张问题图片替换掉了 用9.2系统 iphone试了下 完全没有问题 OK 问题解决


这篇关于iOS9.3-闪退BUG-图片资源格式的问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/476962

相关文章

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

Vue3绑定props默认值问题

《Vue3绑定props默认值问题》使用Vue3的defineProps配合TypeScript的interface定义props类型,并通过withDefaults设置默认值,使组件能安全访问传入的... 目录前言步骤步骤1:使用 defineProps 定义 Props步骤2:设置默认值总结前言使用T

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

解决升级JDK报错:module java.base does not“opens java.lang.reflect“to unnamed module问题

《解决升级JDK报错:modulejava.basedoesnot“opensjava.lang.reflect“tounnamedmodule问题》SpringBoot启动错误源于Jav... 目录问题描述原因分析解决方案总结问题描述启动sprintboot时报以下错误原因分析编程异js常是由Ja

基于C#实现PDF转图片的详细教程

《基于C#实现PDF转图片的详细教程》在数字化办公场景中,PDF文件的可视化处理需求日益增长,本文将围绕Spire.PDFfor.NET这一工具,详解如何通过C#将PDF转换为JPG、PNG等主流图片... 目录引言一、组件部署二、快速入门:PDF 转图片的核心 C# 代码三、分辨率设置 - 清晰度的决定因

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

MySQL 表空却 ibd 文件过大的问题及解决方法

《MySQL表空却ibd文件过大的问题及解决方法》本文给大家介绍MySQL表空却ibd文件过大的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录一、问题背景:表空却 “吃满” 磁盘的怪事二、问题复现:一步步编程还原异常场景1. 准备测试源表与数据