在開發過程中往往會遇見有個別用戶或者測試人員反饋app的閃退現象,而項目一般集成的統計閃退的第三方庫是籠統的統計了所有的閃退信息,無法去定位某一個用戶提出的某一個時間點的某一個閃退問題,於是乎這個時候需要我們能快速的去獲取指定用戶提出的指定閃退,並能夠解析閃退日誌,快速的定位到問題。下麵將自己的做法 ...
在開發過程中往往會遇見有個別用戶或者測試人員反饋app的閃退現象,而項目一般集成的統計閃退的第三方庫是籠統的統計了所有的閃退信息,無法去定位某一個用戶提出的某一個時間點的某一個閃退問題,於是乎這個時候需要我們能快速的去獲取指定用戶提出的指定閃退,並能夠解析閃退日誌,快速的定位到問題。下麵將自己的做法大概的做個總結(可能還有別的方法,但是我覺得下麵講述的方法已經足夠了)。
一、收集閃退日誌
先和用戶確定iPhone是否打開如下設置(以iOS12.0的iPhone為參考):
設置->隱私->分析->共用iPhone分析->與應用開發者共用
只有打開了上述設置閃退日誌才會被收集,然後進入設置->隱私->分析->分析數據,找到以自己項目開頭拼接出現閃退大致時間點文件名的ips文件。
二、解析閃退日誌
1.如果還能找到用戶反饋有問題的app 當時打包時相對應的項目源碼,那麼就很簡單了
獲取到的.ips文件雙擊打開是沒有解析的日誌,現在需要修改尾碼名為.crash,然後雙擊打開出現下麵的彈窗
可以選中當時打包的項目,預覽並且打開,這時候你會發現打開後的項目會顯示閃退的地方。
沒錯,就是這麼簡單。不過前提條件是你還有當時打包的項目源碼,不然要是用改動過當前閃退所在文件的源碼,定位的位置是不對的。
2.不能找到打包時的項目源碼,但是可以找到當時打包的dSYM文件
具體步驟:
1.首先在桌面新建一個文件夾crashFile,用於存放解析閃退日誌用到的文件。
2.找到前面獲取到的.ips文件,拷貝.ips文件放到crashFile中
3.獲取symbolicatecrash文件。
找到當時打包所用的xcode(可能筆記本安裝了好幾個Xcode),然後進入下麵的路徑:/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
拷貝symbolicatecrash工具拷貝到crashFile中
4.獲取dSYM文件
從當時打包的xcode->Window->Organizer->Archives找到當時的xcarchive文件,選中xcarchive文件右鍵點擊【顯示包內容】,拷貝dSYMs文件下的.dSYM文件,放到crashFile中。
至此,crashFile文件中總共有3個文件:.ips文件、symbolicatecrash工具、.dSYM文件。
5. 打開終端,cd到crashFile文件夾中
6. 輸入命令
./symbolicatecrash Agent-2020-02-21-124913.ips Agent.app.dSYM > crash.log
這時候會發現crashFile文件夾下多了個crash.log文件
雙擊打開crash.log文件,你會發現崩潰信息已經成功解析
好了,大功告成!!!
下麵將附上參考的地址(可以驗證閃退的ips文件和dsym文件對應的app是否是同一個):
https://www.cnblogs.com/mukekeheart/p/9449189.html
https://hacpai.com/article/1533042075262
https://www.jianshu.com/p/e5ad706e4196