1 概述
原本的需求是写log到本地,但是用了Bugly之后改为上传native异常log到服务器。
1.1 为什么用Bugly?
在网上查到各种博客和开源项目可以实现把log写到本地,功能参差不齐。Bugly功能齐全,可以写native的log,还支持上传到服务器,是实现这功能的不二之选。
2 添加Bugly异常上报
强烈推荐 官方文档。
<Project>/<Module>/build.gradle文件如下:
android {
defaultConfig {
ndk {
// 设置支持的SO库架构
abiFilters 'armeabi' //, 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a'
}
}
}
dependencies {
compile 'com.tencent.bugly:crashreport:latest.release' //其中latest.release指代最新Bugly SDK版本号,也可以指定明确的版本号,例如2.1.9
compile 'com.tencent.bugly:nativecrashreport:latest.release' //其中latest.release指代最新Bugly NDK版本号,也可以指定明确的版本号,例如3.0
}
获取APP ID并将以下代码复制到项目Application类onCreate()中,Bugly会为自动检测环境并完成配置:
CrashReport.initCrashReport(getApplicationContext(), "注册时申请的APPID", true);
测试
CrashReport.testJavaCrash();
3 Bugly符号表插件
安装这个插件可以自动上传Bugly符号表。
<Project>/build.gradle文件如下:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.tencent.bugly:symtabfileuploader:latest.release'
}
}
<Project>/<Module>/build.gradle文件如下:
apply plugin: 'com.android.application'
// 注:需要配置符号表时,使用bugly插件
apply plugin: 'bugly'
bugly {
appId = 'XXX'
appKey = 'XXX'
}
...
出现下面的错误,清后台无效。
E/CrashReport: CrashReport has not been initialed! pls to call method 'initCrashReport' first!
解:卸载重装APP。
参考
Android SDK 使用指南 - Bugly 文档
https://bugly.qq.com/docs/user-guide/instruction-manual-android/
使用指南 - Bugly 文档
https://bugly.qq.com/docs/utility-tools/plugin-gradle-bugly/
BuglyDevTeam/Bugly-Android-Demo: Bugly Android SDK 使用例子
https://github.com/BuglyDevTeam/Bugly-Android-Demo
Android 平台 Native 代码的崩溃捕获机制及实现 - 云+社区 - 腾讯云
https://cloud.tencent.com/developer/article/1071749
android crash log收集总结 - 简书
https://www.jianshu.com/p/16b0b2fd8c0e
Bugly Android自动上传符号表 - CSDN博客
https://blog.csdn.net/chaoyangsun/article/details/74944047