一、简介
Battery Historian是由Google提供的查看电量相关信息及事件的工具,Battery historian还可以上传bugreport文件,分析用户手机中App的电池耗电情况。详见:GitHub - google/battery-historian: Battery Historian is a tool to analyze battery consumers using Android "bugreport" files. 。
二、耗电数据采集
【注意点】
1.开始测试电量相关的时候,不能连接USB 数据线。因为手机连接到PC 之后处于充电状态,所以这时一切关于电量的数据都是不准的。
2.关闭所有其他后台程序,只留一个被测试程序
3.关闭系统的所有不必要功能,蓝牙,热点
4.每次测试屏幕亮度设置一致
5.每次测试把电量充满,保证每次的测试电量一样
【详细测试步骤】
(1)打开全量采集wakelock数据开关
adb shell dumpsys batterystats --enable full-wake-history
(2)重置电池数据adb shell dumpsys batterystats –reset
此时可以立马把数据线拔掉,防止数据线造成充放电数据干扰
(3)app测试功能完成后,导出数据
重新连接手机确认adb连上了,运行以下命令来将bugreport的信息保存到txt文件中。
adb bugreport>d:/bugreport.txt
(4)生成测试报告数据
我这里用的是docker,先启动docker
docker start 979816d8b1b2
启动镜像,映射端口9999-999
docker run -d -p 9999:9999 gcr.io/android-battery-historian/stable:3.0
然后在浏览器输入本机host:9999(如果是虚拟机就是虚拟机的ip地址:9999),上传bugreport.txt,生成的测试报告如下:
三、功耗报告分析
【名词解释】
Wifi data transferred:Wi-Fi的流量
Mobile packets transferred:手机流量
Wifi packets transferred:Wi-Fi的数据包个数
Mobile active time:手机的数据包个数
Device estimated power use:app的在测试时间内耗电量
Foreground:app在前台的运行时间
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: 在充电