bugly是什么?百度百科上对bugly的介绍 总结下来是:腾讯的开放给开发者的一种平台服务,主要用于android和ios平台上的移动应用的crash和卡顿检测和快速定位以及提供解决方案。是免费服务。
而用过的人都知道,除了crash检测外,bugly还提供应用内升级和热修复等功能。
一切以官方文档为准:https://bugly.qq.com/docs/
Q:文档介绍得很详细了,为什么要写这篇文章?
A:这篇文章是对文档的部分内容的归纳,因而更简练。某些操作直接已步骤形式列出,没有多余的解释。仅供记录和之后学习参考使用,毕竟看文档是件麻烦事,记录一下还能提升认识。
-----link start-----
bugly不是一个SDK,而是多个sdk的集合。下面讲述Android平台上异常上报SDK、应用升级SDk的配置使用。
一 异常上报SDK集成
异常上报(bugly:crashreport)SDK:2.6.6 更新日志
1.导入到开发环境
AS的开发环境众所周知,有两种方式可以导入包和库。
dependencies { compile 'com.tencent.bugly:crashreport:latest.release' //其中latest.release指代最新Bugly SDK版本号,也可以指定明确的版本号,例如2.2.0 }
或者到这里下载jar包:https://bugly.qq.com/docs/release-notes/release-android-bugly/
需要的权限清单
<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" />
混淆配置
-dontwarn com.tencent.bugly.** -keep public class com.tencent.bugly.**{*;}
从混淆配置可看到,bugly要求keep其包下所有代码,说明bugly已做过混淆
2.代码配置
第一步肯定是要调用类似于某个类的静态初始化方法的。
CrashReport.initCrashReport(getApplicationContext(), "注册时申请的APPID", false);//第三个参数为调试模式开关,开发调试时可为true
初始化代码建议放在Application中。文档建议:为了保证运营数据的准确性,建议不要在异步线程初始化Bugly。
调试模式特点:
- 输出详细的Bugly SDK的Log;
- 每一条Crash都会被立即上报;
- 自定义日志将会在Logcat中输出。
另外,初始化方法还有一个重载的。
CrashReport.initCrashReport(getApplicationContext());
如果用这个方法,那么像APPID,调试开关等配置就需要放在其他地方了。
<application <!-- 配置APP ID --> <meta-data android:name="BUGLY_APPID" android:value="<APP_ID>" /> <!-- 配置APP版本号 --> <meta-data android:name="BUGLY_APP_VERSION" android:value="<APP_Version>" /> <!-- 配置APP渠道号 --> <meta-data android:name="BUGLY_APP_CHANNEL" android:value="<APP_Channel>" /> <!-- 配置Bugly调试模式(true或者false)--> <meta-data android:name="BUGLY_ENABLE_DEBUG" android:value="<isDebug>" /> </application>
3.MultiDex注意事项
4.上报进程控制
大概的意思是,如果在Application中直接调用bugly的初始化代码,之后如果有多进程,则每个进程都会上报一些相同的report,为了避免网络资源浪费,最好控制上报的进程仅一个,即主进程。
代码看文档吧
到这儿,基本操作就是这些了。
CrashReport.testJavaCrash();
这行代码会制造一个运行时异常,可以作为测试用。
二 应用升级SDK
----logout---