Monkey+battery-historian 电量测试 (五)
准备电量数据:
1. 断开adb服务
执行:adb kill-server
2. 开启adb服务
执行:adb start-server
或者adb devices
这两步操作的作用:adb作为一种连接的方式,有可能被其他的程序占用,所以我们做电量记录时要避免打开很多可能冲突的东西
3. 收集电池的历史数据
执行:adb shell dumpsys batterystats --enable full-wake-history
4. 重置电池数据
执行:adb shell dumpsys batterystats --reset

5. 使用monkey对要进行电量测试的应用进行操作
执行:adb shell monkey -p 包名 -v 1000
6. 获取电量报告
(这里要注意手机版本,不然后期向Battery Historian导入bugreport.txt文件时会提示“bugreport.txt does not contain a valid bugreport file”,这里也算是一个坑吧)
-
从Android 7.0和更高版本的开发设备中获得bug报告:
cd /Users/weixiangyang/Desktop/
adb bugreport bugreport.zip
实例如图:
-
从设备6.0和更低版本的开发设备中获得bug报告:
- 获取bugreport信息(记录了从开机之后详细的dumpsys,dumpstate和logcat信息):
adb bugreport > 存放的电脑地址/bugreport.txt
- 获取dumpsys信息(获取系统信息:比如内存,CPU,accounts,activities,wifi等信息)
adb shell dumpsys batterystats > 存放的电脑地址/batterystats.txt
或者获取指定的应用程序的dumpsys信息:adb shell dumpsys batterystats > 包名 > 存放的电脑地址/batterystats.txt
- 获取bugreport信息(记录了从开机之后详细的dumpsys,dumpstate和logcat信息):
7. 使用Battery Historian查看batterystats.txt文件的图形化报告,下载Battery Historian工具,继续往下看
Battery Historian工具简介
Battery Historian 一款由Google提供的Android系统电量分析工具,从手机中导出bugreport文件上传至页面,在网页中生成详细的图表数据来展示手机上各模块电量消耗过程,最后通过App数据的分析制定出相关的电量优化的方法。
Battery Historian工具安装有两种:
1. 安装GO环境、Python、Java环境(这种方法我不管了,亲们自己上GitHub研究)
参看链接:https://github.com/google/battery-historian
2. 通过安装Docker环境来安装(这种简单方便)
- Docker官方下载地址: Mac:https://docs.docker.com/docker-for-mac/Windows:https://docs.docker.com/docker-for-mac/
- 查看是否安装成功: 执行:
docker version
- FQ,启动镜像,执行命令:
docker run -d -p 9999:9999 bhaavan/battery-historian
查看batterystats.txt文件的图形化报告
1. 使用浏览器访问地址:http://localhost:9999
2. 导入batterystats.txt或者bugreport.zip文件

记载这里我遇到一个坑,就是文件上传后,submit提交按钮不显示
- 原因:本质是web某些资源没有加载出来,其中的一些资源需要访问google服务器,但是这些资源被墙了,无法访问。只要解决了墙的问题,submit的问题也就迎刃而解了。
- 解决方案:
- 想办法谷歌FQ(我FQ啦,用同事们买的国外服务器 )
- 想办法将无法加载的资源替换为可以加载的资源,参考:https://github.com/waquer/ReplaceGoogleCDN
3. 导入成功后,成功展示电量分析结果,下面我就要来贴神图
电量变化曲折图:

系统统计数据图:

英文看不懂?来来来,我再贴个翻译后的,这样内容一目了然,我也不用解释了

注意个细节啊,这个报告竟然还有Errors与Warnings日志?看图



数据解析
CPU runing: cpu运行的状态
Kernel only uptime: 只有kernell运行
Userspace wakelock: 用户空间申请的锁
Screen: 屏幕是否点亮
Top app: 当前在内存中的应用,按内存占用率排序
Activity Manager Proc: 活跃的用户进程
Crashes(logcat): 某个时间点出现crash的应用
Doze: 是否进入doze模式
Device active: 和Doze相反
JobScheduler: 异步作业调度
SyncManager: 同步操作
Temp White List: 电量优化白名单
Phone call: 是否打电话
GPS: 是否使用GPS
Network connectivity: 网络连接状态(wifi、mobile是否连接)
Mobile signal strength: 移动信号强度(great\good\moderate\poor)
Wifi scan: 是否在扫描wifi信号
Wifi supplicant: 是否有wifi请求
Wifi radio: 是否正在通过wifi传输数据
Wifi signal strength: wifi信号强度
Wifi running: wifi组件是否在工作(未传输数据)
Wifi on: 同上
Audio: 音频子系统?
Camera: 相机是否在工作
Video:是否在播放视频
Foreground process: 前台进程
Package install: 是否在进行包安装
Package active: 包管理在工作
Battery level: 电池当前电量
Temperature: 电池温度
Plugged: 连接usb或者充电
Charging on: 在充电
Logcat misc: 是否在导出日志
电量优化参考:https://www.jianshu.com/p/5d83d8649c98