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

相关文章

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

详谈redis跟数据库的数据同步问题

《详谈redis跟数据库的数据同步问题》文章讨论了在Redis和数据库数据一致性问题上的解决方案,主要比较了先更新Redis缓存再更新数据库和先更新数据库再更新Redis缓存两种方案,文章指出,删除R... 目录一、Redis 数据库数据一致性的解决方案1.1、更新Redis缓存、删除Redis缓存的区别二

oracle数据库索引失效的问题及解决

《oracle数据库索引失效的问题及解决》本文总结了在Oracle数据库中索引失效的一些常见场景,包括使用isnull、isnotnull、!=、、、函数处理、like前置%查询以及范围索引和等值索引... 目录oracle数据库索引失效问题场景环境索引失效情况及验证结论一结论二结论三结论四结论五总结ora

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也

element-ui下拉输入框+resetFields无法回显的问题解决

《element-ui下拉输入框+resetFields无法回显的问题解决》本文主要介绍了在使用ElementUI的下拉输入框时,点击重置按钮后输入框无法回显数据的问题,具有一定的参考价值,感兴趣的... 目录描述原因问题重现解决方案方法一方法二总结描述第一次进入页面,不做任何操作,点击重置按钮,再进行下

解决mybatis-plus-boot-starter与mybatis-spring-boot-starter的错误问题

《解决mybatis-plus-boot-starter与mybatis-spring-boot-starter的错误问题》本文主要讲述了在使用MyBatis和MyBatis-Plus时遇到的绑定异常... 目录myBATis-plus-boot-starpythonter与mybatis-spring-b

mysql主从及遇到的问题解决

《mysql主从及遇到的问题解决》本文详细介绍了如何使用Docker配置MySQL主从复制,首先创建了两个文件夹并分别配置了`my.cnf`文件,通过执行脚本启动容器并配置好主从关系,文中还提到了一些... 目录mysql主从及遇到问题解决遇到的问题说明总结mysql主从及遇到问题解决1.基于mysql

如何测试计算机的内存是否存在问题? 判断电脑内存故障的多种方法

《如何测试计算机的内存是否存在问题?判断电脑内存故障的多种方法》内存是电脑中非常重要的组件之一,如果内存出现故障,可能会导致电脑出现各种问题,如蓝屏、死机、程序崩溃等,如何判断内存是否出现故障呢?下... 如果你的电脑是崩溃、冻结还是不稳定,那么它的内存可能有问题。要进行检查,你可以使用Windows 11

如何安装HWE内核? Ubuntu安装hwe内核解决硬件太新的问题

《如何安装HWE内核?Ubuntu安装hwe内核解决硬件太新的问题》今天的主角就是hwe内核(hardwareenablementkernel),一般安装的Ubuntu都是初始内核,不能很好地支... 对于追求系统稳定性,又想充分利用最新硬件特性的 Ubuntu 用户来说,HWEXBQgUbdlna(Har

MAVEN3.9.x中301问题及解决方法

《MAVEN3.9.x中301问题及解决方法》本文主要介绍了使用MAVEN3.9.x中301问题及解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录01、背景02、现象03、分析原因04、解决方案及验证05、结语本文主要是针对“构建加速”需求交