iOS9系統下SEGV_ACCERR問題的解決方案

好久不寫博客,稍有生疏,感謝一直以來你們的支持。最近我又回到了本身的老本行—— iOS開發。以後的博客應該大部分是iOS相關了,固然,我也會持續關注前端的技術,也歡迎朋友們來捧場哦😸😸😸

今天要講的是開發過程當中遇到的一個小問題,看到網上也有不少人爲之困擾。幾番搜索以後,找到了解決方案,但願該方案也能對你們有所幫助。前端

原由

相信不少開發者收集數據都會用到友盟、bugly之類的工具,筆者就在使用bugly時遇到了一個很棘手的問題:iOS9的系統下,會有一個頻發的崩潰,bugly上的描述爲SEGV_ACCERRjson

這個描述大都指對象提早釋放,然而堆棧信息也沒能提供特別有用的信息來幫助開發者定位該問題。筆者和測試小夥伴反覆操做都很難找到必現步驟,逐步打斷點調試也沒法找到提早釋放的對象。app

原本想提升適配版本到iOS10,可是又沒法拋棄那一羣不會更新系統的小白用戶們。因而伴隨着漫天飛舞的柳絮,我陷入了沉思😔😔iphone

又一村😏

抱着試一試的心態,反覆換着關鍵詞查,終於。。。在stackoverflow上找到了一個支持量爲2解決方案。這個方案講到:該崩潰與項目中的圖片資源相關,具體是伽馬值爲P3的圖片。工具

這個方案看着不太靠譜,可是能怎麼辦,固然是選擇試一試咯,我也很絕望啊。測試

如下爲該解決方案的翻譯:spa

  1. 打包app並導出ipa
  2. 將導出的ipa文件後綴名改成.zip
  3. 解壓該zip文件,解壓後有一個Payload文件夾,該文件夾中是你的app bundle
  4. 打開終端,定位到該app bundle。命令以下:
    cd path/Payload/xxx.app
  5. 使用find命令查找到Assets.car文件。命令爲:
    find . -name 'Assets.car
  6. 使用assetutil命令找到任何包含着16-bit或者P3的資源文件。對上一步找出的每一個Assets.car執行以下命令:
    sudo xcrun --sdk iphoneos assetutil --info /path/Assets.car > /tmp/Assets.json翻譯

    第6步裏面有兩個路徑,第一個路徑 /path/Assets.car不要照抄,替換爲第五步中查找出的路徑。
  7. 使用open命令打開第六步生成的Assets.json。命令爲:
    open /tmp/Assets.json設計

    在第7步打開的文件中查找 P3字段,對應的 Name字段即爲該資源的名稱,刪除相應資源,或者修改文件格式便可。

😛如下爲筆者的操做過程,你們能夠對照使用:調試

圖片描述

Done✌️

使用以上方案,筆者找到了伽馬值爲P3的圖片,並和設計小哥哥聯繫修改了該資源。回測以後,奔潰問題已再也不復現,若是該方案也幫助到你了,不妨點個贊吧。

下一週的主題還在構思中。。。記得常回來看看👋

相關文章
相關標籤/搜索