?是否有人跟我一樣第焰,使用iOS系統(tǒng)9.2.1的手機崖咨,真機調(diào)試情況下,app不會出現(xiàn)任何崩潰术健,運行的順溜順溜的络断。然而裁替,打包發(fā)布到App Store上面去的時候,用手機從App Store上面下載貌笨,運行弱判,則出現(xiàn)各種崩潰,例如未運行完App的啟動頁就崩潰锥惋;進入之后等十幾秒就崩潰昌腰;隨便點擊幾下就崩潰等等开伏。
我也為這個問題苦惱了很久,始終沒有找到解決辦法遭商。第三方框架也全部更新固灵,用友盟或者本身的crash捕捉定位也定位不到,永遠都報這種錯誤劫流。
后來終于在同行的帖子中也看到這種問題巫玻,所以,以下是解決辦法:
原理:在 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 文件. 解壓后的目錄里面會有一個包含著你的 app bundle 文件的 Payload 文件夾.
4. 打開終端病切換到你的app的Payload文件夾下的?.app bundle?文件夾內(nèi)根穷,形式如下:
cd path/to/Payload/your.app
5. 用 find 命令定位到 Assets.car 文件 .app bundle , 形式如下:
find . -name 'Assets.car'
6. 使用 assetutil 命令找到任何包含著 16-bit or P3 的資源文件, 對每個 Assets.car 之行以下命令 :
sudo xcrun --sdk iphoneos assetutil --info/path/to/a/Assets.car> /tmp/Assets.json
注:這里的/path/to/a/Assets.car指的是Assets.car的路徑姜骡,不要直接復制!S炝肌圈澈!使用上一步find命令的結果。
7. ?打開上一步生成的 /tmp/Assets.json 文件并查找包含有 “DisplayGamut": “P3” 或者相關的內(nèi)容. ?這段json的"Name"字段對應的值就是16位或顯示的γ值為P3的資源文件名.
以下是完成圖片尘惧,再提醒康栈,注意這個info /path/to/a/Assets.car,按照我的終端命令來就可以的了喷橙。希望各位開發(fā)者能夠輕松解決這個問題啥么。