近期我們的程序總是在IOS 9.0~9.3之間的系統(tǒng)版本上邊發(fā)生崩潰,還總是莫名其妙的崩潰枚粘,從集成的騰訊Bugly上邊查看崩潰日志蜒茄,總是顯示
類似于這樣的崩潰日志落剪,數(shù)字可以不同,顯示的崩潰的現(xiàn)在在main函數(shù)场靴,由于公司的蘋果手機(jī)都不是9.1啡莉,和9.2.1的系統(tǒng),并且在模擬器上邊完全沒有問題旨剥,這就比較蛋疼了咧欣,完全無從搞起。最后從網(wǎng)上研究好多東西轨帜,終于找到是由于P3圖片的問題魄咕,造成的崩潰
接下來就是如何查找自己項(xiàng)目里面的P3或者16位的圖片了,
查找方法是:
1.創(chuàng)建一個(gè)程序的.ipa文件
2.將此.ipa文件修改為.zip的文件
3蚌父、解壓此.zip文件哮兰,將生成一個(gè)Payload文件,包含一個(gè)含有你程序的一個(gè)文件
4苟弛、打開終端喝滞,cd到那個(gè)你的程序的那個(gè)文件,或者直接拖動(dòng)那個(gè)程序文件到終端
5膏秫、使用find 命令定位到Assets.car文件
find .-name 'Assets.car'
6右遭、使用assetutil 命令找到包含P3 或者16位的資料文件, 對此Assets.car執(zhí)行以下命令
sudo xcrun --sdk iphoneos assetutil --info /path/to/a/Assets.car > /tmp/Assets.json
注:將黑體字部分替換成第五步查找到的返回值缤削,不能使用這個(gè)
7窘哈、打開上一步生成的/tmp/Assets.json文件,在終端輸入 open?/tmp/Assets.json亭敢;
對應(yīng)的就會(huì)打開一個(gè)文件
然后查找?BitsPerComponent 字段宵距,值是8的是正常的,是16的就是不正常吨拗,還有就是查找DisplayGamut字段满哪,值為P3的就業(yè)是不正常的,
8劝篷、把所有不正常的圖片全部替換掉哨鸭,就能完美解決了
9、在不替換圖片的情況下娇妓,來修改圖片解決像鸡,網(wǎng)上看的有兩種方法,但是我只用了一種,另一只沒用
第一種只估、下面我們使用ColorSync實(shí)用工具將這個(gè)圖片文件修改下找到這個(gè)圖片然后按照下面方法
最后點(diǎn)擊應(yīng)用就好了志群。
第二種方法,
這里我們使用bash script直接處理所有圖片為正確格式蛔钙,這樣我們就不用去定位是哪個(gè)圖片的問題了锌云,或許更方便一些。
#!/bin/bashDIRECTORY=$1
echo"------------------------------"
echo"Passed Resources with xcassets folder argument is <$DIRECTORY>"
echo"------------------------------"
echo"Processing asset:"
XSAASSETSD="$(find "$DIRECTORY" -name '*.xcassets')"
for xcasset in $XSAASSETSD
do
echo"---$xcasset"
IMAGESETS="$(find "$xcasset" -name '*.imageset')"
for imageset in $IMAGESETS
do
echo"------$imageset"
FILES="$(find "$imageset" -name '*.png')"
for file in $FILES
do
echo"---------$file"sips -m"/System/Library/Colorsync/Profiles/sRGB Profile.icc"$file--out
$file
done
done
done
echo"------------------------------"
echo"script successfully finished"
echo"------------------------------"
第二種方法純屬copy大神的吁脱,我自己沒有使用過桑涎。希望對你有用。