通过生产日志或集成到本工程的第三方可以看到图片引起的崩溃,有的是asset中个图片在引入asset后改名称了,有的是因为图片不规范,不规范的图片引起的崩溃可能在测试时不容易测出来,但是在生产环境大量点击情况下,非常明显。不规范的图片大多是p3文件,本文教你如何查找到p3图片
1.打开工程所在的文件夹 command + f 搜索所有工程中的所有格式的图片(例如png、jpg、gif、jpeg)(bundle及asset),以.png图片为例。
2.新建一个工程
将我们工程中的所有图片拉入新工程中的asset中
目的是将我们工程中所有的图片(在bundle及asset中的)全部放置于asset中
3.将新工程打包 Product -> Archive 打包,将以下文件拖出来
4.终端cd 到此yhjk.app
5.终端执行 find . -name 'Assets.car' 命令
6.终端使用 assetutil 命令找到任何包含着 16-bit or P3 的资源文件, 对每个 Assets.car 之行以下命令 :
sudo xcrun --sdk iphoneos assetutil --info Assets.car> /Users/yangyangzi/Desktop/Payload/Assets.json
红色即为yhjk.app路径
(如果输入上述命令报包含switch 及 sudo xcode-select -- /Applications/Xcode.app的错则执行如下命令:
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer)
7.则yhjk所在的自定义文件夹下出现了Assets.json文件,打开此文件,即可看见图片是否是"DisplayGamut" : "P3",图片
一般删掉或找专业UI重新作图即可,p3图片来源不规范,例如自己截的图或者非专业UI切得图,注意,一定要用官方给的图。
以下是某p3图片的Asset.json文件
{
"AssetType" : "Image",
"BitsPerComponent" : 16,
"ColorModel" : "RGB",
"Colorspace" : "extended srgb",
"Compression" : "lzfse",
"DisplayGamut" : "P3",
"Encoding" : "ARGB-16",
"Idiom" : "universal",
"Image Type" : "kCoreThemeOnePartScale",
"Name" : "bb",
"Opaque" : false,
"PixelHeight" : 1300,
"PixelWidth" : 732,
"RenditionName" : "bb.png",
"Scale" : 1,
"SizeOnDisk" : 522368
},