Xcode10.x 打包引起iOS9.0 ~ iOS9.3 啟動奔潰

前言:

作為一個不稱職的iOS開發(fā)工程師,這次備受打擊。
2019.8.7日iOS V2.1.2正式對外發(fā)布使用,2019.8.8日早上上班來接到兩個客服反饋iOS9啟動崩潰,反復(fù)卸載安裝都沒有解決問題,下午問題一路飆升直接“漲停”,運維統(tǒng)計反饋崩潰主要iOS版本停留在iOS9這個層面。

WHAT --- iOS9閃退

當(dāng)時我就腦子第一反應(yīng)是不是我打包選擇的Deployment Target 10.0,然后經(jīng)過多番周折,在我們公司具有90人額iOS大群中找到了一個9.3.2的設(shè)備,老老實實重新打包降低版本,還是崩潰崩潰......
當(dāng)時運維又送來一份統(tǒng)計結(jié)果:
iOS用戶系統(tǒng)版本:
iOS9 :10820人
iOS8 :3800人
iOS7 :247人(這尼瑪什么鬼,僵尸吧?。?br> 當(dāng)時說實話看到這個結(jié)果腦子第一反應(yīng):
這些用iPhone的人 手機(jī)系統(tǒng)不升級是怎么想的!

看到這個結(jié)果我一下方了。。。一直以來還從沒見過APP在啟動時候就閃退的,而且出現(xiàn)在iOS9這個版本中。如果真是大版本的崩潰,這可就罪過大了。。。

就問你遇到這個情況你慌不慌...

實在沒辦法只能找度娘:Xcode10打包iOS9啟動閃退
WoC,不看不知道,網(wǎng)上帖子一大堆,還不是我一個人遇到的!
先說結(jié)果,引起iOS9大面積閃退我要說是“圖片資源”你信嗎?
你沒看錯,你也沒聽錯,就是圖片資源

重點:圖片顯示模式γ值為'P3'

Q:PPM圖片和P3圖像

iOS 9對圖像格式敏感。若是16位或P3的圖像,會引發(fā)閃退。而且收集用戶crash報告是一堆混亂的地方報錯,并無法明確定位到出錯的代碼在哪里。出現(xiàn)大面積iOS 9.1、9.2系統(tǒng)用戶閃退、崩潰的情況,請仔細(xì)回想一下此版本做的操作,大概率是加入了不符合規(guī)則要求的圖片。
最常見也是最明顯的犯錯情況是加入了jpg、jpeg等類型的圖片,而不是正緊的png切圖。這樣在加載UI的時候就會閃退了。
當(dāng)你資源文件中[含有16位圖]或者[圖片顯示模式γ值為'P3']且iOS targets設(shè)定為iOS 9.3以下就會出現(xiàn)這個問題. 如果你的app需要支持廣色域顯示的話,那你必須得把target設(shè)置成iOS 9.3+,相反,如果你的app不需要支持廣色域且你想兼容 iOS 9.3 之前的項目,你就得把所有的16位的或者顯示模式為'P3'圖片全都替換成8位模式的SRGB顏色的圖片。

PPM和P3是什么?

如何確定資源是否存在P3圖片

工程目錄中都會有一個Images.xcassets 用來存放AppIcon和launchImage
方法1:將工程目錄中的所有png、jpg、jpeg圖片資源文件拖入Images.xcassets中
方法2:新建工程項目將所有png、jpg、jpeg圖片資源文件放入新的文件夾拖入創(chuàng)建的工程

步驟:
1、Archive導(dǎo)出ipa包;
2、將ipa文件后綴修改為zip,解壓zip文件,目錄中Playload文件夾
3、打開終端cd 到Playload文件夾下你的App
4、輸入:find . -name 'Assets.car'
5、使用 assetutil 命令找到任何包含著 16-bit or P3 的資源文件, 對每個 Assets.car 之行以下命令 :
sudo xcrun --sdk iphoneos assetutil --info ./Assets.car> /tmp/Assets.json
注意:./Assets.car是上一個步驟的輸出結(jié)果,就是你的Assets.car的路徑。
6、打開上一步生成的 /tmp/Assets.json 。
輸入:open /tmp/Assets.json
彈出一個記事本,查看里面的內(nèi)容。找包含“DisplayGamut": “P3”的圖片或者BitsPerComponent值為16的圖片,根據(jù)名字找到并替換;替換圖片最好還是找專業(yè)的老老實實給你重新作圖!


BA516869A2053C7170591F8F1BD505B3.jpg

干貨分享:

PPM圖像詳解和P3圖像引起iOS 9崩潰閃退問題解決方案
Xcode10打包引起iOS9.0-9.2系統(tǒng)的用戶啟動App隨機(jī)崩潰的問題修復(fù)記錄

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容