最近公司測試組同事在用Monkey搞iOS自動化測試,期間產(chǎn)生一些崩潰信息,反饋到開發(fā)這邊都是.ips文件。.ips文件的都是一些堆棧地址,無法定位到我們應(yīng)用的某一行。而且在bugly和友盟上的崩潰信息也是同樣(已上傳dYSM文件),沒辦法,只能自己去解析崩潰信息文件了。。。
這個(gè)轉(zhuǎn)化的過程有一個(gè)專業(yè)術(shù)語,叫符號化,就是講這些堆棧地址轉(zhuǎn)化為我們可識別的一些類名、方法名等符號信息。

符號化前.png

符號化后.png
網(wǎng)上一般說是有兩種方法:
1、命令行解析ips
2、使用Xcode解析ips/crash。
我主要采用的是第一種方法:利用命令行解析ips。
操作的過程如下:
1、獲取.xcarchive文件。
我們打包時(shí)的.xcarchive文件,具體獲取方法是打開xcode,點(diǎn)擊 【window】 --> 【Organizer】,進(jìn)入到我們打包Archives的管理界面,這個(gè)界面有我們之前打的包的所有記錄,選擇測試App對應(yīng)的App以及打包的版本,單擊選中的Archive選擇 show in Finder,然后將對應(yīng)的.xcarchive文件拷貝出來,放在桌面。
2、具體的解析過程(需要命令行操作)
2.1 在桌面上新建一個(gè)文件夾,命名隨意即可,我這里叫signifying
2.2 拷貝崩潰信息的.ips文件放到signifying文件夾中,并將.ips文件后綴名修改為.crash
2.3 前往文件夾 【/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash】,找到symbolicatecrash。然后把symbolicatecrash拷貝到signifying文件夾中。

屏幕快照 2019-07-08 下午3.56.34.png
2.4 從.xcarchive文件里,右鍵點(diǎn)擊【顯示包內(nèi)容】,從Products/Applications里面拷貝.app文件(這里可能沒有后綴,直接拷貝Applications文件夾內(nèi)的文件),放到signifying文件夾中。
2.5 同樣右鍵點(diǎn)擊【顯示包內(nèi)容】,拷貝dSYM文件下的AppID.dSYM文件(這里可能有很多.dSYM文件,選擇你App的AppId對應(yīng)的“你應(yīng)用的AppID.dSYM”),放到signifying文件夾中。

2.4-2.5
此時(shí),你會看到你桌面的文件夾下有下圖四個(gè)文件:

屏幕快照 2019-07-08 下午4.08.27.png
2.6 打開終端,cd到signifying文件夾中
2.7 輸入命令 ./symbolicatecrash "crash文件的絕對路徑""dSYM的絕對路徑" > signifying.crash ,敲回車鍵。
Tips:(如果2.7步驟之后,終端報(bào)錯(cuò) Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 69...。終端中再輸入export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer",回車,然后再次輸入2.7步驟中的命令,回車即可)。
這個(gè)時(shí)候你會發(fā)現(xiàn)你的signifying文件夾中多了一個(gè)signifying.crash文件,它就是我們開頭提到的符號化之后的文件,就可以看到具體是哪個(gè)類,哪一行崩潰的信息了。大概步驟及過程就是這樣。

終端命令.png