首先附上崩潰記錄的截圖
1蛔趴、其他人的手機怎么都不崩潰挑辆,單單這個手機出現(xiàn)各種閃退的問題,于是我把用戶手機插到電腦上進行Xcode真機測試孝情;
2鱼蝉、然而一點問題都沒出現(xiàn),于是我猜測debug下屏蔽了部分crash的問題箫荡,于是
結(jié)果崩潰了魁亦,哈哈,要的就是這種效果羔挡,【問題得到了復現(xiàn)】
3洁奈、然后接下來就是解決問題:
原理:在 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文件. 解壓后的目錄里面會有一個包含著你的 app bundle 文件的 Payload 文件夾.
3. 打開終端病切換到你的app的Payload文件夾下的 .app bundle 文件夾內(nèi),形式如下:
cd path/to/Payload/your.app
4. 用 find 命令定位到 Assets.car 文件 .app bundle , 形式如下:
find . -name 'Assets.car'
5. 使用 assetutil 命令找到任何包含著 16-bit or P3 的資源文件, 對每個 Assets.car 之行以下命令 :
示例sudo xcrun --sdk iphoneos assetutil --info/path/to/a/Assets.car> /tmp/Assets.json
$ sudo xcrun --sdk iphoneos assetutil --info ./Assets.car > /tmp/Assets.json
注:這里的/path/to/a/Assets.car指的是Assets.car的路徑商佛,不要直接復制:砀帧!良姆!使用上一步find命令的結(jié)果肠虽。
打開finder 然后 cmd+shirft+G 粘上/tmp/Assets.json
Assets.json
6. 打開上一步生成的 /tmp/Assets.json 文件并查找包含有 “DisplayGamut": “P3” 或者相關的內(nèi)容. 這段json的"Name"字段對應的值就是16位或顯示的γ值為P3的資源文件名.
找出這個圖片icon-about
再次編譯就好了,不報錯了玛追。打包測試之后也OK了税课。