发布网友 发布时间:2022-05-12 00:48
共1个回答
热心网友 时间:2023-10-30 23:47
最近新产品刚上线,问题很多,每天都在解各种Bug。作为一个安卓开发者,安卓系统让人又爱又恨。一个好的性能监控工具,能让开发者在解bug的路上轻松不少。
绝大部分开发者会使用第三方性能监控产品来获取应用的崩溃数据,友盟应该是市场占比最大的一个,身边的程序猿都在用它。其次不得不提到Bugly,这也是数据和服务做的很专业的产品。还有一个是360加固保,他们推出的崩溃日志分析服务很有特点。所以,就和大家分享下在安卓平台应用性能监测方面友盟、Bugly、360加固保三家产品的使用感受。
一、产品定位:
友盟:友盟是老牌数据分析专家,相比分享和推送等服务,崩溃分析只是友盟应用统计中的一小部分,并不作为其主要运维的产品,这个从友盟的页面宣传和产品摆放位置不难看出,而且友盟的崩溃分析服务只分为趋势和列表两个页面,相对过于简单。
Bugly:Bugly是专门从事应用崩溃分析的产品,所以在数据的精准度和深度上很专业。Bugly还做过不少线下技术沙龙活动,来推广他们的崩溃日志。产品页面的整体感觉偏技术化,在数据整合和页面展现上,如果是初次使用的话感觉有点乱,页面关联较多。其次,感觉Bugly不太稳定,在QQ交流群里也经常有开发者提到没数据或异常的问题。
360加固保:加固保以APP加固知名,它推出的崩溃日志分析服务最大特点是免SDK集成,这是与其他产品最明显的区别。也就是说不需要任何代码集成过程,上传APP进行加固后就可以使用崩溃日志分析服务(虽然是免SDK集成,但也会增加些包体大小,大概150M左右)。
二、捕获范围:
友盟:只能捕获Java层崩溃,而Native层则获取不到(Native层崩溃是由C++层代码错误引起的,在绝大多数Android系统上, Native层崩溃发生时不会弹出提示框提醒程序崩溃),所以在捕获范围上,明显不足。
Bugly:Java层和Native层都能捕获到。
360加固保:Java层和Native层都能捕获到,且捕获的log及时全面。
下面是三家在崩溃捕获范围的对比列表,Bugly最全,但SDK大小也会随之增加,如果开发者在集成的时候,选择了arm64位/ X86架构,大概会增加500KB左右。arm64位和X86架构的手机毕竟很少,所以如果选择兼容,势必会增加SDK的大小。
三、崩溃数据
实时崩溃数据:
友盟:测试时大概要过2个小时左右才能显示当日的崩溃,实在是慢。后来友盟的客服给出的结果是,崩溃信息如果本次启动产生,下次启动时才会上报。好吧,这个规则有点儿呵呵的赶脚。(这是友盟统计报表各指标更新频率详解:http://bbs.umeng.com/thread-6122-1-1.html)
360加固保和Bugly:页面提示是每5分钟更新一次,经过测试,Bugly和360加固保基本都在1分钟左右就能看到崩溃信息,实时性非常强。
ANR问题:
三家里面只有Bugly支持ANR问题上报,这个功能是否有必要开发者可以自己评估和判断。个人感觉,随着现在智能手机性能的不断提高,出现ANR的情况并不会太多。ANR不属于exception,所以不好捕获,如果要捕获的话需要在后台开一个线程不停的监控这个文件的读写,这样就势必会导致手机的耗电和资源耗费。
下面是在崩溃数据的展示方面三家的对比,Bugly在崩溃信息的丰富性上还是很有优势的。
四、筛选功能:
友盟:可以通过操作系统、机型、自定义的标签来筛选错误,同时可以添加或删除标签。
Bugly:筛选功能很丰富,可以自定义标签,按渠道、出错堆栈进行高级筛选。
360加固保:功能比较简洁实用,可以对不同版本做崩溃对比,便于掌握版本稳定性情况。但在自定义便签和筛选项方面其实还可以再丰富一些。
五、崩溃详情
友盟:
这是整个崩溃产品里最重要的部分,好的产品应该捕获的log全面,通过辅助信息,能快速帮忙开发者定位和复现问题。友盟提供的crash log比较清晰,不过友盟没有提供 crash log 的符号化,所以需要开发自己导出报告到本地,然后利用开发工具来手动符号化。
Bugly:
提供的信息比较准确和丰富,还提供了内存占比、是否root等辅助信息。相比友盟,可以更快速的帮助开发者定位到问题。
360加固保:
从具体log和整体趋势上数据展现的很清晰,能帮开发者了解该类型的崩溃情况,同时提供TOP5崩溃机型/设备,便于开发者有针对性的复现问题。
五、其他功能特点
友盟:
mapping文件管理:这个功能是说当apk进行了Proguard混淆后,抓取到的java层崩溃日志中相应的崩溃堆栈中的类名、函数名等都会变成混淆后的字符串,这样开发者无法直接将崩溃的调用关系对应到自己的源码(未经混淆前的代码)。所以如果使用了Proguard混淆后,开发者可以通过上传mapping文件对混淆代码进行翻译。
Bugly:对于进行了代码混淆后的应用,使用Bugly 的sdk也可以正常捕获崩溃,只要上传符号表进行还原就可以了。此外,Bugly还可以配置崩溃提醒,关注其微信公众账号后,就可以用微信接收报警了。
360加固保:
加固保本身是做应用加密安全的,在技术强度上肯定比Proguard混淆更深度,所以如果使用加固保,就不需要再进行代码混淆了。加固保也可以配置崩溃提醒,填写相关负责人邮箱即可接收到提醒邮件。
整体对比看,每家各有优势,个人认为Bugly和360加固保都是不错的性能监测工具,这里只指列出了三家有特点或差异的部分,仅代表个人观点,欢迎大家吐槽讨论。