前言
上文说到,由于无法捕获用户app使用中的异常,所以今天来搞一波bugly
PS:本文只讲异常上报的接入和用法,不包含app下载和热更新等模块。
添加依赖
先去https://bugly.qq.com/v2/workbench/apps新建产品
很简单,两步即可搞定,点击新建产品 按指引走即可,这里不多BB,直接接入Android项目。
app依赖(主 Module 的 build.gradle 中)
compile 'com.tencent.bugly:crashreport:3.2.33'//sdk
compile 'com.tencent.bugly:nativecrashreport:3.7.3'//ndk
Application中初始化
//参数配置
CrashReport.UserStrategy strategy = new CrashReport.UserStrategy(this);
//设置上报渠道
strategy.setAppChannel();
//设置App版本,可以用 versionCode 或者 versionName,或者随便起。这里推荐使用versionName。
strategy.setAppVersion(versionName);
//设置包名
strategy.setAppPackageName(packageName);
//获取进程名
String processName = getProcessName(android.os.Process.myPid());
//设置只在主进程上报
strategy.setUploadProcess(processName == null || processName.equals(packageName));
//正式初始化 APPID是新建Bugyly应用时,每个应用有对应一个APPID。
CrashReport.initCrashReport(this, "APPID", false, strategy);
配置UserId,推荐在app启动成功,能拿到本地存储的用户信息后调用。
CrashReport.setUserId(UserId);
测试方法
//调用该方法,可主动让App奔溃,建议放在某个按钮后执行。
CrashReport.testJavaCrash();
然后部署测试,不出意外的话,点击上面说的按钮,你在Bugly的管理页面就会看到该异常。
获取进程名的方法
private static String getProcessName(int pid) {
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader("/proc/" + pid + "/cmdline"));
String processName = reader.readLine();
if (!TextUtils.isEmpty(processName)) {
processName = processName.trim();
}
return processName;
} catch (Throwable throwable) {
throwable.printStackTrace();
} finally {
try {
if (reader != null) {
reader.close();
}
} catch (IOException exception) {
exception.printStackTrace();
}
}
return null;
}
符号表的配置
现在一般项目 都会 启用 混淆,在管理页面 看到的错误就会是混淆后的a.b.c()之类的文字,也看不明白,不知道出错在哪里。这个时候就需要配置 符号表 ,也就是 启用混淆 打包后 生成的 mapping.txt 之类的文件。
如何配置
官方是提供了两种配置方案
1.手动,在管理页面自行上传 mapping.txt 之类的文件。比较麻烦。
2.插件配置。
这里就来讲一下第二种方法。
只需编译release包,即可自动上传 对应的mapping.txt
依赖插件(project 的 build.gradle 中)
buildscript {
dependencies {
classpath 'com.tencent.bugly:symtabfileuploader:2.2.1'
}
}
启用插件,并配置(主 Module 的 build.gradle 中)
//在顶部
apply plugin: 'bugly'//启用bugly插件
//在最外成
bugly{
//bugly 的 key 和appId
appId = 'XXXXXX' // 注册时分配的App ID
appKey = 'XXXXXX' // 注册时分配的App Key
}
即可配置完成。
接下来buid release 一下。打包成功,会自动上传相关配置表。
然后再去管理页面,就可以看到正常的错误信息了。
奥利给!!!
Bugly文档地址:https://bugly.qq.com/docs/user-guide/instruction-manual-android/