前言
你可能遇到过这样的情景,在测试App功能时没有遇到过Bug,或者将出现的Bug处理好了,但当App正式上线后,用户在使用中却发生了程序奔溃,但是用户又重现不出来,也说不明白怎么操作导致了奔溃。这时,你一定为此苦恼。那么我们要怎么收集用户使用中出现的异常问题?有许多方法可以去收集用户的异常,比如try catch时上传异常报告。今天给大家介绍的,是腾讯提供的Bugly系统,它能简单有效的收集App在使用过程中发生的异常,而且在后台更能清楚了解到异常的发生次数、时间、详细信息等。
使用
登录和创建
首先在Bugly官网登录,登录后新建产品,填写产品名称、平台、类型、产品描述后保存,然后点击右侧的更多按钮,选择产品设置,就可以查看当前产品的App ID、App Key等详细信息。
集成
Bugly支持JCenter仓库和Maven Central仓库。为了实现更加灵活的配置,Bugly SDK(2.1.5及以上版本)和NDK(SO库)目前已经分开成两个独立的仓库:
- SDK:com.tencent.bugly:crashreport
- NDK:com.tencent.bugly:nativecrashreport
其中,集成Bugly NDK时,需要同时集成Bugly SDK。
这里强烈推荐自动集成方式:
在Module的build.gradle文件中添加依赖和属性配置:
dependencies {
compile 'com.tencent.bugly:crashreport:latest.release' //其中latest.release指代最新Bugly SDK版本号,也可以指定明确的版本号,例如2.2.0
}
参数配置
- 在AndroidManifest.xml中添加权限:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_LOGS" />
- 请避免混淆Bugly,在Proguard混淆文件中增加以下配置:
-dontwarn com.tencent.bugly.**
-keep public class com.tencent.bugly.**{*;}
初始化
获取APP ID并将以下代码复制到项目Application类onCreate()中,Bugly会为自动检测环境并完成配置:
CrashReport.initCrashReport(getApplicationContext(), "注册时申请的APPID", false);
为了保证运营数据的准确性,建议不要在异步线程初始化Bugly。
第三个参数为SDK调试模式开关,调试模式的行为特性如下:
- 输出详细的Bugly SDK的Log;
- 每一条Crash都会被立即上报;
- 自定义日志将会在Logcat中输出。
建议在测试阶段建议设置成true,发布时设置为false。
测试
现在您可以制造一个Crash(建议通过“按键”来触发),来体验Bugly的能力了。在初始化Bugly的之后,调用Bugly测Java Crash接口。
CrashReport.testJavaCrash();
当你运行程序会,调用该方法,就会造成程序奔溃。
你就可以在“崩溃”页面看到刚才触发的Crash issue了(延迟一般在10s以内)。