Firebase-Crashlytics收集崩潰日志失敗

背景

公司的項(xiàng)目在使用Firebase-Crashlytics進(jìn)行App的崩潰監(jiān)控,近期發(fā)現(xiàn)在Firebase上看不到新發(fā)布的幾個(gè)App版本的崩潰數(shù)據(jù),這里記錄下排查過(guò)程。

原因

經(jīng)過(guò)一番排查,發(fā)現(xiàn)原因是我們?cè)谶M(jìn)行包瘦身工作時(shí),在項(xiàng)目中設(shè)置EXPORTED_SYMBOLS_FILE選項(xiàng),提供了一個(gè)空文件。Crashlytic SDK的正常啟動(dòng)依賴(lài)__mh_execute_header。在Firebase的Github上有這個(gè)問(wèn)題的討論。找到原因后,解決方案也很簡(jiǎn)單:在EXPORTED_SYMBOLS_FILE的文件中,增加一行__mh_execute_header即可。

排查過(guò)程

排查該問(wèn)題的過(guò)程比較曲折,可以分為3個(gè)階段:

  • 對(duì)比代碼版本變化,從代碼上尋找與Firebase相關(guān)的改動(dòng)。發(fā)現(xiàn)清理警告時(shí)改動(dòng)過(guò)我們內(nèi)部封裝的Crash庫(kù),但是改動(dòng)內(nèi)容可以確定對(duì)Firebase不會(huì)產(chǎn)生影響。
  • Firebase SDK版本過(guò)低。正常來(lái)說(shuō)這種使用廣泛的SDK,即使版本更新,也會(huì)保持對(duì)舊版本的兼容,所以Firebase SDK版本過(guò)低導(dǎo)致無(wú)法收集日志的可能性不大。
  • 查看控制臺(tái)日志。這個(gè)方法比較實(shí)用,這次問(wèn)題的原因也是通過(guò)查看控制臺(tái)日志找到的。連接手機(jī),Mac上打開(kāi)控制臺(tái),選擇手機(jī)設(shè)備,啟動(dòng)APP,即可過(guò)濾相關(guān)的日志輸出。在控制臺(tái)的日志中,發(fā)現(xiàn)Crashlytics的日志,啟動(dòng)失敗,提示需要__mh_execute_header信息。

總結(jié)

這次也是踩到了Firebase的一個(gè)坑,記錄一下,如果恰巧有同行遇到類(lèi)似的問(wèn)題,可以作為參考。同時(shí)推薦通過(guò)控制臺(tái)查App日志的方式進(jìn)行問(wèn)題排查,有些問(wèn)題在不需要運(yùn)行Xcode項(xiàng)目的情況下,就可以快速定位到。比如這次遇到的Crashlytics啟動(dòng)失敗問(wèn)題、以及之前遇到過(guò)的App測(cè)試包無(wú)法安裝問(wèn)題,在控制臺(tái)都會(huì)輸出有用的錯(cuò)誤日志。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容