iOS開發(fā)工具——統(tǒng)計(jì)Crash的工具Crashlytics

簡介

Crashlytic 成立于2011年铜涉,是專門為移動(dòng)應(yīng)用開者發(fā)提供的保存和分析應(yīng)用崩潰信息的工具媳友。Crashlytics的使用者包括:支付工具Paypal, 點(diǎn)評應(yīng)用Yelp, 照片分享應(yīng)用Path, 團(tuán)購應(yīng)用GroupOn等移動(dòng)應(yīng)用腌逢。
2013年1月芒划,Crashlytics被Twitter收購穿剖,成為又一個(gè)成功的創(chuàng)業(yè)產(chǎn)品蚤蔓。被收購之后,由于沒有了創(chuàng)業(yè)公司的不穩(wěn)定因素糊余,我們更有理由使用它來分析應(yīng)用崩潰信息秀又。
使用Crashlytics的好處有:

1单寂、Crashlytics不會(huì)漏掉任何應(yīng)用崩潰信息。拿我的應(yīng)用舉例來說吐辙,在iTunes Connect的后臺(tái)查看不到任何崩潰信息凄贩。但是用戶確實(shí)會(huì)通過微博或者客服電話反饋應(yīng)用崩潰的情況。而這些在Crashlytics中都可以統(tǒng)計(jì)到袱讹。如下截圖分別顯示了我的某應(yīng)用在蘋果iTunes Connect后臺(tái)和Crashlytics中的差別:


2疲扎、Crashlytics可以象Bug管理工具那樣,管理這些崩潰日志捷雕。例如:Crashlytics會(huì)根據(jù)每種類型的Crash的出現(xiàn)頻率以及影響的用戶量來自動(dòng)設(shè)置優(yōu)先級椒丧。對于每種類型的Crash,Crashlytics除了會(huì)像一般的工具提供Call Stack外救巷,還會(huì)顯示更多相關(guān)的有助于診斷的信息壶熏,例如:設(shè)備是否越獄,當(dāng)時(shí)的內(nèi)存量浦译,當(dāng)時(shí)的iOS版本等棒假。對于修復(fù)掉的Crash日志,可以在Crashlytics的后臺(tái)將其關(guān)掉精盅。下圖所示的是一個(gè)我的早期應(yīng)用的崩潰記錄帽哑,在我修復(fù)后,我將其更新為已修復(fù)狀態(tài)叹俏。

3妻枕、Crashlytics可以每天和每周將崩潰信息匯總發(fā)到你的郵箱,所有信息一目了然粘驰。

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

使用介紹
申請帳號(hào)
Crashlytics的服務(wù)是免費(fèi)提供的,但是并不能直接注冊使用蝌数,需要先申請愕掏,打開Crashlytic的官網(wǎng),輸入自己的郵箱申請使用顶伞。如下圖所示:


提交完郵箱之后饵撑,你的申請會(huì)放在Crashlytics的申請隊(duì)列中,網(wǎng)頁跳轉(zhuǎn)到如下界面枝哄。在這個(gè)界面的右側(cè)肄梨,你可以提供更多有效信息來讓Crashlytics優(yōu)先處理你的申請,建議大家都填上更多自己的信息挠锥。

如果順利众羡,通常1-2天左右,你就會(huì)收到Crashlytics發(fā)來的申請通過郵件蓖租,如下圖所示粱侣,通過郵件鏈接跳轉(zhuǎn)到注冊界面羊壹,填寫密碼即可完成注冊。

設(shè)置工程

在使用Crashlytics前需要對原有的XCode工程進(jìn)行配置齐婴,在這一點(diǎn)上油猫,Crashlytics做得比其它任何我見過的SDK提供商都體貼。因?yàn)镃rashlytics專門做了一個(gè)Mac端的App來幫助你進(jìn)行配置柠偶,所以情妖,在配置前你先需要去這里下載該應(yīng)用。
應(yīng)用下載后诱担,運(yùn)行該應(yīng)用并登錄帳號(hào)毡证。然后選擇應(yīng)用中的"New App"按鈕,然后選擇自己要增加Crashlytics的工程蔫仙,然后Crashlytics的應(yīng)用會(huì)提示你為工程增加一個(gè)Run Script料睛,如果你不知道如何添加,這里有一個(gè)幫助的文檔摇邦。添加好之后的工程截圖如下所示


接著恤煞,Crashlytics的本地應(yīng)用會(huì)提示你將Crashlytics相關(guān)的framework拖到工程中。如下所示:

按照提示做完之后施籍,就到了最后一步了居扒,在AppDelegate
的didFinishLaunchingWithOptions
方法中加入如下代碼:
#import <Crashlytics/Crashlytics.h>

- (BOOL)application:(UIApplication *)application 
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[Crashlytics startWithAPIKey:@"your identify code"];
}

之后,運(yùn)行一下程序法梯,Crashlytics就會(huì)檢測到你設(shè)置成功苔货。如果你感興趣石挂,可以自己手工觸發(fā)一個(gè)崩潰記錄救军,看Crashlytics能否幫你收集到馒索。使用如下代碼即可

[[Crashlytics sharedInstance] crash];

如果你想測試一個(gè)Exception導(dǎo)致的崩潰,可以使用如下代碼:

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

應(yīng)用對外發(fā)布后铛绰,就可以在Crashlytics后臺(tái)查看和修改相關(guān)的記錄。另外产喉,Crashlytics還支持將數(shù)據(jù)導(dǎo)入到其它項(xiàng)目管理工具(例如Redmine或Jira)如下所示捂掰,配置都非常簡單。


實(shí)現(xiàn)原理和使用體會(huì)

實(shí)現(xiàn)原理

在原理上曾沈,Crashlytics的通過以下2步完成崩潰日志的上傳和分析:
提供應(yīng)用SDK这嚣,你需要在應(yīng)用啟動(dòng)時(shí)調(diào)用其SDK來設(shè)置你的應(yīng)用。SDK會(huì)集成到你的應(yīng)用中塞俱,完成Crash信息的收集和上傳姐帚。
修改工程的編譯配置,加入一段代碼障涯,在你每次工程編譯完成后罐旗,上傳該工程對應(yīng)的dSYM文件膳汪。研究過手工分析Crash日志的同學(xué)應(yīng)該知道,只有通過該文件九秀,才能將Crash日志還原成可讀的Call Stack信息遗嗽。

使用體會(huì)

為了更加方便開發(fā)者設(shè)置相應(yīng)的工程,Crashlytics提供了mac端的應(yīng)用程序鼓蜒,幫助你檢測相關(guān)工程是否正確設(shè)置并且提供相應(yīng)的幫助信息痹换。后來我還發(fā)現(xiàn),該程序還會(huì)自動(dòng)幫你升級Crashlytics的SDK文件都弹。雖然這一點(diǎn)很體貼晴音,但是我個(gè)人覺得還是不太友好。因?yàn)楫吘剐薷腟DK會(huì)影響應(yīng)用編譯后的內(nèi)部邏輯缔杉,在沒有任何通知的情況下升級锤躁,我都無法確定Crashlytics有沒有干壞事。不過國外的服務(wù)或详,特別是象Twitter這種相對較大知名度公司提供的服務(wù)要有節(jié)操得多系羞,所以在這一點(diǎn)上我還是比較放心的。
使用Crashlytics可以讓你擺脫管理應(yīng)用崩潰記錄的煩惱霸琴。并且?guī)椭阏页鰬?yīng)用的一些重大隱藏性Bug椒振。例如我之前寫的一個(gè)應(yīng)用就過一個(gè)緩存過期的問題,只有當(dāng)緩存過期時(shí)才會(huì)觸發(fā)這個(gè)Bug梧乘,這樣的問題在測試人員那邊很難觸發(fā)澎迎,因?yàn)樗麄儾豢赡芰私饽愕膽?yīng)用內(nèi)部實(shí)現(xiàn)細(xì)節(jié)。通過Crashlytics选调,使我清楚了解到應(yīng)用Crash的數(shù)量和位置夹供,結(jié)合自己的開發(fā)經(jīng)驗(yàn),就很容易找到問題所在了仁堪。
值得一提的是哮洽,Crashlytics本身的官方文檔也非常健全,如果你在使用中遇到任何問題弦聂,也可以上去查看詳細(xì)的文檔鸟辅。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市莺葫,隨后出現(xiàn)的幾起案子匪凉,更是在濱河造成了極大的恐慌,老刑警劉巖捺檬,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件再层,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)树绩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進(jìn)店門萨脑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人饺饭,你說我怎么就攤上這事渤早。” “怎么了瘫俊?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵鹊杖,是天一觀的道長。 經(jīng)常有香客問我扛芽,道長骂蓖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任川尖,我火速辦了婚禮登下,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘叮喳。我一直安慰自己被芳,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布馍悟。 她就那樣靜靜地躺著畔濒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪锣咒。 梳的紋絲不亂的頭發(fā)上侵状,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天,我揣著相機(jī)與錄音毅整,去河邊找鬼趣兄。 笑死,一個(gè)胖子當(dāng)著我的面吹牛毛嫉,可吹牛的內(nèi)容都是我干的诽俯。 我是一名探鬼主播,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼承粤,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了闯团?” 一聲冷哼從身側(cè)響起辛臊,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎房交,沒想到半個(gè)月后彻舰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年刃唤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了隔心。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,505評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡尚胞,死狀恐怖硬霍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情笼裳,我是刑警寧澤唯卖,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站躬柬,受9級特大地震影響拜轨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜允青,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一橄碾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧颠锉,春花似錦法牲、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至眉枕,卻和暖如春恶复,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背速挑。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工谤牡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人姥宝。 一個(gè)月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓翅萤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親腊满。 傳聞我的和親對象是個(gè)殘疾皇子套么,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評論 2 359

推薦閱讀更多精彩內(nèi)容