iOS9.3以下系統(tǒng)閃退

解決了一個詭異的閃退BUG只在iOS9.3以下系統(tǒng)出現(xiàn) 有遇到的可以來看 共勉

大致上的原因是:iOS 線上版本圖片資源格式的問題導致的閃退

具體的情況與解決方法如下:

最近上架的app出現(xiàn)了一個詭異的BUG 有多詭異呢 這么說吧 之前公司測試的時候沒有任何問題??然后上線了之后 公司有個9.2系統(tǒng)的5S然后就各種閃退 啟動了之后 點擊tabbar中的任意一個 就會高概率的出現(xiàn)閃退現(xiàn)象??項目中有接入友盟統(tǒng)計 也用符號表查了下崩潰原因??錯誤根本沒辦法定位 很可惜啥都沒發(fā)現(xiàn)。

于是就各種在網(wǎng)上找相關的資料嘍 終于功夫不負有心人 找到了問題的原因所在:

圖片資源的問題

導致這種問題的原因是:在 Xcode 8 中,當你資源文件中[含有16位圖]或者[圖片顯示模式γ值為'P3']且iOS targets設定為iOS 9.3以下就會出現(xiàn)這個問題. 如果你的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 文件夾內(nèi)。

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

6 使用 assetutil 命令找到任何包含著 16-bit or P3 的資源文件, 對每個 Assets.car 執(zhí)行以下命令 : sudo xcrun --sdk iphoneos assetutil --info Assets.car> /tmp/Assets.json 回車之后會讓你輸入密碼 輸入密碼回車即可

7.open /tmp/Assets.json???? 打開上一步生成的 /tmp/Assets.json 文件并查找包含有 “DisplayGamut": “P3” 或者相關的內(nèi)容. 這段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重新切圖 替換掉即可??新包已經(jīng)把倆張問題圖片替換掉了 用9.2系統(tǒng) iphone試了下 完全沒有問題 OK 問題解決

希望幫助需要幫助的朋友

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

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

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