言歸正傳,蘋果已經(jīng)提供了幾種獲取log的方式:
- 使用Xcode從設(shè)備獲取,將手機用數(shù)據(jù)線連接安裝了Xcode的Mac后,可以通過window-Devices and Simulators查看;
- 蘋果爸爸發(fā)給你的.crash文件,需要使用.dSYM文件將其符號化后增加可讀性。
對于App崩潰分析,為什么我不推薦使用友盟、Bugly這些第三方開放服務(wù)
這些第三方工具集成起來非常簡單,.a文件導(dǎo)入,使用在開放平臺上申請的AppKey調(diào)用一個函數(shù)就能搞定。但是個人認為該功能完全可以自己實現(xiàn),很多面試官甚至老板都不能理解為什么我要多此一舉,主要有以下幾個原因:
- 無法針對單臺設(shè)備的log收集,第三方SDK收集上來的數(shù)據(jù)是沒有條件篩選的,只要安裝了app的設(shè)備產(chǎn)生奔潰都會上傳;
- 只有在App真的發(fā)生奔潰,也就是用戶體驗極差的俗稱”閃退“現(xiàn)象時,才會記錄并上傳log;
- 競品問題,例如“友盟”目前在阿里旗下,而你所在的公司和阿里又是對手,那BOSS還會允許你使用友盟統(tǒng)計么?
- 對于容錯處理,例如數(shù)組越界、數(shù)據(jù)類型不匹配等問題,很多開發(fā)者都會做容錯處理,那么在App Store發(fā)布的版本中這些被”過濾“掉的異常由從何得知?
敏捷開發(fā)/用戶少的項目直接使用Bugly確實可以很直觀的發(fā)現(xiàn)bug并減少開發(fā)時間,但很多復(fù)雜場景說明了第三方SDK并不是”治療“App的最優(yōu)選擇,我的解決辦法是:UncaughtExceptionHandler+Signal+SafeProtector+XLog,缺點也很明顯就是log文件的生成機制、上傳服務(wù)器機制等都要自己實現(xiàn)+控制.
- UncaughtExceptionHandler捕獲Objective-C層異常
- Signal捕獲系統(tǒng)內(nèi)核層異常
- SafeProtector Foundation防奔潰框架
- Mars/XLog
如果本文對你有所幫助,記得點擊一下喜歡哈