在開發(fā)過程中往往會遇見有個別用戶或者測試人員反饋app的閃退現(xiàn)象,而項(xiàng)目一般集成的統(tǒng)計閃退的第三方庫是籠統(tǒng)的統(tǒng)計了所有的閃退信息,無法去定位某一個用戶提出的某一個時間點(diǎn)的某一個閃退問題,于是乎這個時候需要我們能快速的去獲取指定用戶提出的指定閃退,并能夠解析閃退日志,快速的定位到問題。下面將自己的做法大概的做個總結(jié)(可能還有別的方法,但是我覺得下面講述的方法已經(jīng)足夠了)。
一、收集閃退日志
先和用戶確定iPhone是否打開如下設(shè)置(以iOS12.0的iPhone為參考):
設(shè)置->隱私->分析->共享iPhone分析->與應(yīng)用開發(fā)者共享
只有打開了上述設(shè)置閃退日志才會被收集,然后進(jìn)入設(shè)置->隱私->分析->分析數(shù)據(jù),找到以自己項(xiàng)目開頭拼接出現(xiàn)閃退大致時間點(diǎn)文件名的ips文件。

二、解析ips閃退日志
1.如果還能找到用戶反饋有問題的app 當(dāng)時打包時相對應(yīng)的項(xiàng)目源碼,那么就很簡單了
獲取到的.ips文件雙擊打開是沒有解析的日志,現(xiàn)在需要修改后綴名為.crash,然后雙擊打開出現(xiàn)下面的彈窗

可以選中當(dāng)時打包的項(xiàng)目,預(yù)覽并且打開,這時候你會發(fā)現(xiàn)打開后的項(xiàng)目會顯示閃退的地方。

沒錯,就是這么簡單。不過前提條件是你還有當(dāng)時打包的項(xiàng)目源碼,不然要是用改動過當(dāng)前閃退所在文件的源碼,定位的位置是不對的。
2.不能找到打包時的項(xiàng)目源碼,但是可以找到當(dāng)時打包的dSYM文件
具體步驟:
1.首先在桌面新建一個文件夾crashFile,用于存放解析閃退日志用到的文件。
2.找到前面獲取到的.ips文件,拷貝.ips文件放到crashFile中
3.獲取symbolicatecrash文件。
找到當(dāng)時打包所用的xcode(可能筆記本安裝了好幾個Xcode),然后進(jìn)入下面的路徑:/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
拷貝symbolicatecrash工具拷貝到crashFile中
4.獲取dSYM文件
從當(dāng)時打包的xcode->Window->Organizer->Archives找到當(dāng)時的xcarchive文件,選中xcarchive文件右鍵點(diǎn)擊【顯示包內(nèi)容】,拷貝dSYMs文件下的.dSYM文件,放到crashFile中。
至此,crashFile文件中總共有3個文件:.ips文件、symbolicatecrash工具、.dSYM文件。

打開終端,cd到crashFile文件夾中
輸入命令
./symbolicatecrash Agent-2020-02-21-124913.ips Agent.app.dSYM > crash.log
這時候會發(fā)現(xiàn)crashFile文件夾下多了個crash.log文件

雙擊打開crash.log文件,你會發(fā)現(xiàn)崩潰信息已經(jīng)成功解析

好了,大功告成!??!
下面將附上參考的地址(可以驗(yàn)證閃退的ips文件和dsym文件對應(yīng)的app是否是同一個):
https://www.cnblogs.com/mukekeheart/p/9449189.html