预研Crashlytics 在2014-09-24
1:实现原理
在原理上,Crashlytics通过以下2步完成崩溃日志的上传和分析:
(1)提供应用SDK,你需要在应用启动时调用其SDK来设置你的应用。SDK会集成到你的应用中,完成Crash信息的收集和上传。
(2)修改工程的编译配置,加入一段代码,在你每次工程编译完成后,上传该工程对应的dSYM文件。研究过手工分析Crash日志的同学应该知道,只有通过该文件,才能将Crash日志还原成可读的Call Stack信息。
2:如何测试
(1)在applicationDidFinishLaunching方法中添加如下代码。
’
//尽可能靠近你的applicationDidFinishLaunching方法的顶部,但在所有其他第三方的SDK后
[Crashlytics sharedInstance].debugMode = YES;
[Crashlytics startWithAPIKey:@"97d8a33c450f2337fb632c82c4adebe3088cc0cd"];
(2)在其他的页面中添加
[[Crashlytics sharedInstance] crash];或者int *x = NULL; *x = 42;
3:需要注意的地方
(1)只要确保你正确地安装我们(尽可能靠近你的applicationDidFinishLaunching方法的顶部,但在所有其他第三方的SDK后)。
(2)应用对外发布后,才可以在Crashlytics后台查看和修改相关的记录
(3)修改工程的编译配置,加入一段代码,在你每次工程编译完成后,上传该工程对应的dSYM文件(根据为静态库添加依赖的shell脚本:run script Build Phase—》run script —》shell)
(4)Xcode的“打包(Archive)”命令一个版本时也就是release(Ad Hoc或者App Store)时,保存了对应的xxx.app和xxx.dSYM文件(可以搜索.dSYM关键字)
(5)每次发布版本要注意备份一份对应的.dSYM文件。
4:Crashlytics提供3日志机制,自定义日志记录,自定义按键和用户信息。 ( 注意:调用Crashlytics startWithAPIKey 之后)
(1)为了更好地应对客户支持查询,它往往是有帮助知道哪些用户经历一个给定的崩溃
(void)setUserIdentifier:(NSString *)identifier; //deviceToken+手机号
(2)如果你想要利用高级的用户标识符功能,您还可使用两个:
+ (void)setUserName:(NSString *)name;
+ (void)setUserEmail:(NSString *)email;
5:其他的方案
(1)友盟sdk
(2)云测sdk