Android8.0以上分析使用Energy Profiler,低版本使用Battery Historian,为了降低配置的难度建议使用docker容器运行Battery Historian镜像
在docker上运行Battery Historian镜像
使用docker是最简单高效的办法,也不用配置繁琐的环境问题,docker安装
在终端搜索Battery Historian相关的镜像
docker search battery
docker run --name=battery -d -p 9999:9999 bhaavan/battery-historian
拉取并运行battery-historian镜像,会自动下载并运行镜像,之前pull过了就直接运行
vpn可以使用
docker run -p port_number:9999 gcr.io/android-battery-historian/stable:3.0 --port 9999
port_number自己选择一个端口
Battery Historian容器就成功的运行了,端口映射本地端口9999,在浏览器打开
获取设备的耗电报告
耗电统计是系统组件,伴随系统运行的整个过程,也就是说系统运行他就一直在统计。这个统计是基于软件层面实现的,不同的硬件模块配置了不同的参数,然后使用算法进行估算,power_profile文件的参数值OEM厂商必须测量并提供前实际值,所以不同的厂商是不一样的。另外获取统计报告的时候需要将统计重置,并断开usb连接(连接时充电),否则会大大影响统计有效性。
要从运行Android 7.0和更高版本的开发设备获取错误报告:
adb bugreport bugreport.zip
对于6.0或更低版本的设备:
adb bugreport > bugreport.txt
选择bugreport.zip文件上传
之后就会看到电池的使用数据报告,Battery Historian图表显示随着时间的推移电源相关事件。
当系统组件处于活动状态时,每行显示彩色条形段,从而从电池中汲取电流。该图表并未显示该组件使用了多少电,只是该应用程序处于活动状态。图表按类别进行组织,随着时间的推移显示每个类别的栏,如图表的X轴上所示。不同颜色代表指标的不同状态:比如Screen 红色代表亮屏,白色代表关屏,具体鼠标放在最左侧的️上就会自动提示
默认情况下,统计信息是在运行基础上维护的,Android也不记录特定于应用程序的用户空间wakelock转换的时间戳。如果您希望Historian在时间线上显示关于每个单独唤醒锁的详细信息,则应在开始实验之前使用以下命令启用完整唤醒锁报告:
adb shell dumpsys batterystats --enable full-wake-history
请注意,通过启用完全唤醒锁定报告,电池历史记录将在几个小时内溢出。使用此选项进行短时间测试(3-4小时)。
采集报告前将battery统计状态重置,重置命令结束后断开usb,测试结束后用获取报告命令导出统计文件包:
adb shell dumpsys batterystats --reset
执行上面两条命令后,相当于清理了battery记录的日志,点开了微信、后置相机、今日头条运行一段时间,然后导出报告
adb bugreport bugreport.zip
内核唤醒源和内核唤醒锁活动的事件记录
另外可以做两次报告的对比分析
如下图,但是我选择的是没啥关联的报告对比,内容很多,看看对比信息