iOS 9.3以下 Assets奔潰問題

今天遇到一個 Assets奔潰問題的問題,記錄一下
9      UIKit    0x0000000188309994  __98-[_UIAssetManager imageNamed:scale:idiom:subtype:cachingOptions:sizeClassPair:attachCatalogImage:]_block_invoke + 424 + 8853908 
10  UIKit   0x0000000188309734  -[_UIAssetManager imageNamed:scale:idiom:subtype:cachingOptions:sizeClassPair:attachCatalogImage:] + 212 + 8853300 
11  UIKit   0x0000000188309f18  -[_UIAssetManager imageNamed:withTrait:] + 528 + 8855320 
12  UIKit   0x0000000187ea3c5c  _UIImageWithNameAndTraitCollection + 96 + 4242524 
13  UIKit   0x0000000187ac6220  _UIImageWithName + 48 
百度原因:

如果你的圖片資源文件里有16位圖或者圖片顯示模式為P3,并且Deployment Target是iOS9.3以下的就會出現(xiàn)這個問題。

定位問題圖片:

1.導(dǎo)出項目ipa包
2.解壓:修改后綴名.ipa為.zip后直接解壓該文件
3.打開終端進入Payload文件夾,并檢索Assets.car

find . -name 'Assets.car'

4.使用 assetutil 命令導(dǎo)出圖片的信息存儲到Assets.json文件中

sudo xcrun --sdk iphoneos assetutil --info ./Assets.car > ./Assets.json

網(wǎng)上還有下面這種方法,試驗后沒有生成Assets.json文件
sudo xcrun --sdk iphoneos assetutil --info ./Assets.car > /tmp/Assets.json

5.打開生成的Assets.json文件,查找含有”DisplayGamut” : “P3”, “Encoding” : “ARGB-16″的內(nèi)容。這個對應(yīng)的Name就是出現(xiàn)問題的圖片了
6.不想自己改圖片的,直接扔給美工。

最新解決方案問題描述:(來自網(wǎng)友)

XCode 10打包的App在iOS 9上Crash(EXC_BAD_ACCESS)。

原因:App Store的Bug,上傳后的IPA經(jīng)過App Store處理后,加載assets中的圖在iOS 9上會Crash。

解決方案三選一:

1、切回到XCode 9.4打包,前提是你沒有用到一些iOS 12的新特性。
2、棄用Assets,把里面的圖(除了icon和launch image)拖拽到項目里,按照普通圖片的方式使用。
3、等待Apple修復(fù)(Xcode 10.1 beta 2已修復(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ù)。

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