前言
bugreport我们都知道,是用来查看安卓异常信息的,通过adb命令导出。但是bugreport文件特别大,阅读很不方便,本文就带读者们了解一下如何使用Battery Historian来帮助我们更轻松的阅读bugReport文件。
本文主要分为三个部分:
1.bugreport的介绍
2.Battery Historian的介绍以及搭建流程
3.总结(使用之后的体验)
一.bugreport介绍
安卓中,所有的异常其实都会被以日志的形式进行记录,不同的异常类型会分别存储到下面这几个目录下面:
目录 | 介绍 |
data/anr/ | 应用的ANR信息直接存储目录 |
data/tombstones/ | 应用墓碑日志 |
data/system/dropbox | dropbox存储的信息。dropbox会对crash/anr/tombstones/wtf等异常进一步的进行日志收集,并生成一份新的文件进行保存。 |
如图所示的就是dropbox目录下的crash等异常信息。
data_app_crash指的是普通应用的crash异常,system_app_crash指的是系统级应用的crash异常,ANR也会做这样的区分。
如果设备root了,我们自然可以像拷贝文件夹一样把这些文件拷贝出来,但是对于普通的设备来说,我们通过adb调试是没有权限读取data/anr/等文件夹中内容的,所以如果开发者想读取异常信息怎么办呢?这时候就该bugreport出场了。
我们可以通过adb bugreport的命令生成一份bugreport文件,这份文件不但会包含crash/anr等信息,甚至与window的状态/进程信息等也都会帮我们进行抓取和显示。但是包含如此多的信息,自然就会有一个问题,那就是文件太大了,一般的bugreport文件都要四五十M,如果以文本的形式进行阅读实在是太费力了,所以Battery Historian应运而生。
Battery Historian介绍
Battery Historian是是google开源的一款工具,用来辅助我们阅读bugreport。
其实完整的搭建流程Battery Historian上已经有讲解了,链接如下:
但是感觉readme是英文的,而且描述有一些模糊,所以就实际按照流程操作了一遍。
流程如下:
本文选择的是通过doctor的方式进行搭建,这也是最简单的一种方式。
1.安装Docker环境
2.通过下面的命令启动Docker。其中port改成自己本地想使用的端口号。
docker -- run -p <port>:9999 gcr.io/android-battery-historian/stable:3.0 --port 9999
比如我使用的是:
docker -- run -p 8080:9999 gcr.io/android-battery-historian/stable:3.0 --port 9999
这样,命令行页面应该就会把服务搭建好
3.打开浏览器,输入地址:http://localhost:8080/
这里的8080就是我们刚才配置的端口
4.等到网页加载出来后,选择Browse选择文件
这里有可能会需要等待很长时间,怀疑有可能是转发的解析请求。
5.选择bugreport文件,然后点击submit即可
6.然后网页就会显示解析中
7.然后Battery Historian就会帮助我们解析bugreport文件,最后以网页的形式展示给我们。
总结
bugreport确实可以帮助我们查看一些异常信息,但是上面图中也有贴截图,实际有可能并没有那么的理想。