今天遇到一個 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ù))。