1. 程式人生 > >使用Crashlytics來儲存IOS應用崩潰資訊

使用Crashlytics來儲存IOS應用崩潰資訊

簡介

Crashlytic 成立於2011年,是專門為移動應用開者發提供的儲存和分析應用崩潰資訊的工具。Crashlytics的使用者包括:支付工具Paypal, 點評應用Yelp, 照片分享應用Path, 團購應用GroupOn等移動應用。

2013年1月,Crashlytics被Twitter收購,成為又一個成功的創業產品。被收購之後,由於沒有了創業公司的不穩定因素,我們更有理由使用它來分析應用崩潰資訊。

使用Crashlytics的好處有:

1、Crashlytics不會漏掉任何應用崩潰資訊。拿我的應用舉例來說,在iTunes Connect的後臺檢視不到任何崩潰資訊。但是使用者確實會通過微博或者客服電話反饋應用崩潰的情況。而這些在Crashlytics中都可以統計到。如下截圖分別顯示了我的某應用在蘋果iTunes Connect後臺和Crashlytics中的差別:

2、Crashlytics可以象Bug管理工具那樣,管理這些崩潰日誌。例如:Crashlytics會根據每種型別的Crash的出現頻率以及影響的使用者量來自動設定優先順序。對於每種型別的Crash,Crashlytics除了會像一般的工具提供Call Stack外,還會顯示更多相關的有助於診斷的資訊例如裝置是否越獄,當時的記憶體量,當時的iOS版本等。對於修復掉的Crash日誌,可以在Crashlytics的後臺將其關掉。下圖所示的是一個我的早期應用的崩潰記錄,在我修復後,我將其更新為已修復狀態。

3、Crashlytics可以每天和每週將崩潰資訊彙總發到你的郵箱,所有資訊一目瞭然。

下面我就給大家介紹如何使用Crashlytics。

使用介紹

申請帳號

Crashlytics的服務是免費提供的,但是並不能直接註冊使用,需要先申請,開啟Crashlytic的官網 ,輸入自己的郵箱申請使用。如下圖所示:

提交完郵箱之後,你的申請會放在Crashlytics的申請佇列中,網頁跳轉到如下介面。在這個介面的右側,你可以提供更多有效資訊來讓Crashlytics優先處理你的申請,建議大家都填上更多自己的資訊。

如果順利,通常1-2天左右,你就會收到Crashlytics發來的申請通過郵件,如下圖所示,通過郵件連結跳轉到註冊介面,填寫密碼即可完成註冊。

設定工程

在使用Crashlytics前需要對原有的XCode工程進行配置,在這一點上,Crashlytics做得比其它任何我見過的SDK提供商都體貼。因為Crashlytics專門做了一個Mac端的App來幫助你進行配置,所以,在配置前你先需要去

這裡下載該應用。

應用下載後,執行該應用並登入帳號。然後選擇應用中的”New App”按鈕,然後選擇自己要增加Crashlytics的工程,然後Crashlytics的應用會提示你為工程增加一個Run Script,如果你不知道如何新增,這裡有一個幫助的文件。新增好之後的工程截圖如下所示

接著,Crashlytics的本地應用會提示你將Crashlytics相關的framework拖到工程中。如下所示:

按照提示做完之後,就到了最後一步了,在AppDelegatedidFinishLaunchingWithOptions方法中加入如下程式碼:

1
2
3
4
5
6
#import <Crashlytics/Crashlytics.h>
- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
   [Crashlytics startWithAPIKey:@"your identify code"];
}

之後,執行一下程式,Crashlytics就會檢測到你設定成功。如果你感興趣,可以自己手工觸發一個崩潰記錄,看Crashlytics能否幫你收集到。使用如下程式碼即可

1
[[Crashlytics sharedInstance] crash];

如果你想測試一個Exception導致的崩潰,可以使用如下程式碼:

1
2
[NSObject doesNotRecognizeSelector];
[arrayWithOnlyTwoElements objectAtIndex:3];

應用對外發布後,就可以在Crashlytics後臺檢視和修改相關的記錄。另外,Crashlytics還支援將資料匯入到其它專案管理工具(例如Redmine或Jira)如下所示,配置都非常簡單。

實現原理和使用體會

實現原理

在原理上,Crashlytics的通過以下2步完成崩潰日誌的上傳和分析:

  1. 提供應用SDK,你需要在應用啟動時呼叫其SDK來設定你的應用。SDK會整合到你的應用中,完成Crash資訊的收集和上傳。
  2. 修改工程的編譯配置,加入一段程式碼,在你每次工程編譯完成後,上傳該工程對應的dSYM檔案。研究過手工分析Crash日誌的同學應該知道,只有通過該檔案,才能將Crash日誌還原成可讀的Call Stack資訊。

使用體會

為了更加方便開發者設定相應的工程,Crashlytics提供了mac端的應用程式,幫助你檢測相關工程是否正確設定並且提供相應的幫助資訊。後來我還發現,該程式還會自動幫你升級Crashlytics的SDK檔案。雖然這一點很體貼,但是我個人覺得還是不太友好。因為畢竟修改SDK會影響應用編譯後的內部邏輯,在沒有任何通知的情況下升級,我都無法確定Crashlytics有沒有幹壞事。不過國外的服務,特別是象Twitter這種相對較大知名度公司提供的服務要有節操得多,所以在這一點上我還是比較放心的。

使用Crashlytics可以讓你擺脫管理應用崩潰記錄的煩惱。並且幫助你找出應用的一些重大隱藏性Bug。例如我之前寫的一個應用就過一個快取過期的問題,只有當快取過期時才會觸發這個Bug,這樣的問題在測試人員那邊很難觸發,因為他們不可能瞭解你的應用內部實現細節。通過Crashlytics,使我清楚瞭解到應用Crash的數量和位置,結合自己的開發經驗,就很容易找到問題所在了。

值得一提的是,Crashlytics本身的官方文件也非常健全,如果你在使用中遇到任何問題,也可以上去檢視詳細的文件。

願Crashlytics能讓大家的應用都更加健壯~