iOS 線上版本圖片資源格式的問(wèn)題導(dǎo)致的閃退

近段剛剛上傳了app新版本 ,上線前也是各種真機(jī)調(diào)試,包括公司一位同事的iOS9.2系統(tǒng)的iPhone6s , 一點(diǎn)問(wèn)題都沒(méi)有 可是兩天后審核通過(guò)了 我們公司其他人下載app都非常流暢 ,也沒(méi)有閃退的情況,唯獨(dú)這個(gè)同事的iOS 9.2系統(tǒng)的iPhone6s 各種閃退 , 集成的有友盟統(tǒng)計(jì) 看了崩潰原因根本無(wú)法定位 都是這種錯(cuò)誤 這是在友盟統(tǒng)計(jì)上看到的

Paste_Image.png

點(diǎn)擊去看詳情


Paste_Image.png

根本無(wú)法定位
就在網(wǎng)上開(kāi)始翻閱資料 最后找到了類似的問(wèn)題
圖片資源的問(wèn)題
導(dǎo)致這種問(wèn)題的原因是:在 Xcode 8 中,當(dāng)你資源文件中[含有16位圖]或者[圖片顯示模式γ值為'P3']且iOS targets設(shè)定為iOS 9.3以下就會(huì)出現(xiàn)這個(gè)問(wèn)題. 如果你的app需要支持廣色域顯示的話,那你必須得把target設(shè)置成iOS 9.3+,相反,如果你的app不需要支持廣色域且你想兼容 iOS 9.3 之前的項(xiàng)目,你就得把所有的16位的或者顯示模式為'P3'圖片全都替換成8位模式的SRGB顏色的圖片

解決辦法 :
1 導(dǎo)出ipa包

2.然后把該ipa文件修改后綴名.ipa 為 .zip. 這時(shí)候就變成了一個(gè).zip的壓縮包了

3 解壓該 .zip 文件. 解壓后的目錄里面會(huì)有一個(gè)包含著你的 app bundle 文件的 Payload 文件夾.

Paste_Image.png

4 打開(kāi)終端病切換到你的app的Payload文件夾下的 .app bundle 文件夾內(nèi),形式如下:

cd  path/to/Payload/your.app

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

find .  -name  'Assets.car'

6 使用 assetutil 命令找到任何包含著 16-bit or P3 的資源文件, 對(duì)每個(gè) Assets.car 之行以下命令 :

sudo xcrun --sdk iphoneos assetutil --info path/to/a/Assets.car> /tmp/Assets.json

注:這里的 path/to/a/Assets.car 指的是Assets.car的路徑,不要直接復(fù)制!!!使用上一步find命令的結(jié)果。

7 打開(kāi)上一步生成的 /tmp/Assets.json 文件并查找包含有 “DisplayGamut": “P3” 或者相關(guān)的內(nèi)容. 這段json的"Name"字段對(duì)應(yīng)的值就是16位或顯示的γ值為P3的資源文件名.

Paste_Image.png

執(zhí)行完上述的命令就能看到下邊的界面了

這個(gè)是正常的


Paste_Image.png

看下邊的這個(gè)圖片就有問(wèn)題了

Paste_Image.png

找到類似于上邊的圖片 都是有問(wèn)題的 然后去你的xcode中 找到這些圖片 我是直接刪除了然后讓UI在做圖
就可以了
希望可以幫到大家 這個(gè)問(wèn)題太隱晦了 ~~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容