Battery Historian V2 使用
写在前面,拿到一份问题Log日志,如何去分析日志,如何去定位一个问题,工程师之间的功力在这块体现的十分明显。尤其就Android来说,系统已经很庞大,一份Log里面会有很多信息,很多你不需要的信息,此时工程师就像一个侦探,如何能筛选出有用信息,如何通过Log中的其他信息来帮助自己去分析问题,如何根据已有Log信息去还原当时案发现场,还原当时系统的状态。又或者说拿到一个问题现场如何通过各种实验命令去缩小这个问题的范围?这个就是庖丁解牛,就看你的“刀法”如何,有的工程师下去”两刀“,就大致知道了问题范围,而有的人… ,刀法差距就体现在工程师对Android各个模块的理解了。
“刀法”好了再配上几把好”兵器“,上阵杀敌才能百战不殆
Systrace就是一个利器,关于Systrace这里就不多说了,在分析ANR,卡顿或者性能优化的时候很常用,相关文章也有不少。Systrace还是得多用,才能越来熟练,纸上谈兵,光说不练,再好的兵器也只是废铁。
这里介绍另外一个兵器,可以图形化分析Android功耗 — Battery Historian V2
先上张图

简介
谷歌对Battery Historian简介:可以在 Android 5.0 Lollipop(API 级别21)及更高版本的 Android 设备上检测与电池相关的信息和事件。它允许应用程序开发人员在时间轴上可视化系统和应用级别的事件,可以轻松地查看各种聚合统计信息,也可以选择一个应用程序,检查所选择的应用程序对电池指标的影响。此外,它还允许对两个错误报告进行 A/B 比较,突出显示了关键电池相关指标的差异。
V2与Battery Historian区别:V2就是Battery Historian的升级版,之前那个Battery Historian分析功耗问题还不是很方便,V2比之前好很多。
环境搭建
1、python 2.7安装
-
安装python 2.7:https://www.python.org/
注意:必须安装Python 2.7 -
在CMD中输入“ python –V“ 检查python是否环境是否配置成功

-
配置环境变量,如果上面环境ok,可以调过配置环境变量过程

2、安装Git -
下载:https://git-scm.com/ 安装
-
检查环境是否成功:cmd 执行 “git version”

3、配置Java -
安装 java http://www.oracle.com/technetwork/java/javase/downloads/index.htm
-
检查环境是否成功:cmd 执行 “java version”

4、安装Go -
检查环境是否成功:cmd 执行 “go version”

-
配置go 环境变量,如果2可以则调过该步骤


-
配置workspace环境变量,可以配置在自己设置的目录,如 D:\ownerpath\workspace

上面四个步骤搭完,Battery Historian的基础环境就OK了,接下来下载Battery Historian代码
安装Battery Historian
1、下载Battery Historian代码及其依赖项:
$ go get -d -u github.com/google/battery-historian/...
2、运行Battery Historian
$ cd C:\Go\workspace\src\github.com\google\battery-historian (自己的workspace path)`
# Compile Javascript files using the Closure compiler
$ go run setup.go (第一次执行该命令会比较慢,需要自动安装依赖的lib)
# Run Historian on your machine
$ go run cmd/battery-historian/battery-historian.go [--port <default:9999>]
#以后可以使用battery historian.bat直接运行,需要自行配置bat里的Battery Historian的目录
上面搞完就可以看到下面这个,我是做了bat脚本以后启动就比较方便
color 0A
@echo off
cd C:\Go\workspace\src\github.com\google\battery-historian
go run setup.go
go run cmd/battery-historian/battery-historian.go
echo ===================
pause

3、使用chrome 登录网址 http://localhost:9999 查看是否运行
成功就会看到下面这个界面
4、submit提交按钮不显示。
这个需要配置google CDN
原因:本质是web某些资源没有加载出来,其中的一些资源需要访问google服务器,但是这些资源被墙了,无法访问。只要解决了墙的问题,submit的问题也就迎刃而解了。至于如若翻墙不在本文讨论范围
Battery Historian 使用
1、 导出bugreport
- 收集电池的历史数据
$ adb shell dumpsys batterystats --enable full-wake-history - 重置电池数据
$ adb shell dumpsys batterystats –reset - 运行一段时间,导出adb bugreport
要从运行Android 7.0及更高版本的开发设备获取错误报告:
$ adb bugreport bugreport.zip
对于6.0及更低版本的设备:
$ adb bugreport > bugreport.txt
一般出问题后可以直接导出bugreport,没有1、2步骤,由于没有 `–enable full-wake-history’ 所以只会有部分信息
这个搞个脚本比较方便
color 0A
@echo off
echo ===================
pause
adb wait-for-devices
adb wait-for-device
adb shell dumpsys batterystats --reset
adb shell dumpsys batterystats --enable full-wake-history
2、分析
- 使用浏览器访问地址:http://localhost:9999
- 导入batterystats.txt或者bugreport.zip文件
这里关于如何分析图形,这个是能多看多分析,培养感觉,关注前台应用,此时信号状态,长唤醒锁,亮灭屏,看CPU Run的节奏,电池曲线…这个没法细致去说,总之多看,多用培养感觉。


3、参考
- 关于图标的条目说明可以参考
Android电量优化(使用Battery Historian)
http://xusx1024.com/2018/01/08/battery-historian-2/

- github Battery Historian README.md文档
https://github.com/google/battery-historian
此外Battery Historian可以搭配PowerMonitor实现高阶玩法
Battery Historian V2 是一个用于分析Android设备电池性能的工具,尤其适用于API级别21及以上的版本。本文介绍了如何搭建Battery Historian V2的环境,包括安装Python 2.7、Git、Java和Go。接着,详细阐述了如何导出bugreport,使用Battery Historian分析电池历史数据,重点关注前台应用、信号状态、长唤醒锁等关键指标。最后,提到了Battery Historian与其他工具的结合使用,以提升功耗分析能力。

1万+

被折叠的 条评论
为什么被折叠?



