Battery-Historian是谷歌推出的一款专门分析Bugreport的工具,是谷歌2015年I/O大会上推出的一款检测运行在android5.0(Lollipop)及以后版本的设备上电池的相关信息和事件的工具,是一款对于分析手机状态,历史运行情况很好的可视化分析工具。

当设备在使用电池的时候,它可以使开发者们看到系统级和应用级事件图表,在图表时间轴上可以缩放和平移,能够直观的看到自上一次充满电到现在设备电池的统计汇总信息,它可以选中一个应用程序来检查该应用影响电池电量的一些参数,并且可以对比两个bugreport文件信息分析,并对其电池关键区别点做高亮显示。

一、Battery Historian安装:

Github上有本地安装和使用方法:https://github.com/google/battery-historian/

逃课教程:直接使用网络搭建共享网站https://bathist.ef.lc/

二、生成bugreport

1. 接手机,打开开发者模式(设置->关于手机->版本信息->连续点击版本号),连接adb。

2. 重置batterystats 数据, 手机始终在后台收集batterystats和其他调试信息。重置会清除旧电池采集数据.

adbshell dumpsys batterystats –reset

3. 使用你的应用程序,正常使用手机耗电。

4. 导出原始bugreport数据(bugreport导出会持续2-5min,期间勿断开连接)

adbbugreport > bugreport.txt

有的会直接生成在当前路径下执行 start . 查看当前路径是否有对应bugreport

三、Battery Historian 指标详解

SystemStats选项卡:包含系统范围的统计信息,如单元信号级别和屏幕亮度。这些信息提供了设备发生情况的整体情况。这对确保没有外部事件影响特别有用。

AppStats选项卡:包含有关特定应用程序的信息。使用左侧的应用程序选择窗格中排序应用程序下拉列表对应用程序列表进行排序。可以选择一个特定的应用程序来查看应用程序下拉列表的统计信息。

要查找特定应用程序的数据:将其包名称输入位于可视化左侧下方应用程序选择下的两个下拉菜单中的较低位置

选择特定的应用程序时,以下数据可视化类别将更改为显示应用程序特定的数据而不是系统范围的数据:

SyncManager.

Foreground process.

Userspace Wakelock.

Top app.

JobScheduler.

Activity Manager Proc.

四、通用分析思路

1、通过system stats 中screenon/off rate 平均亮灭屏耗电熟读可以初步确认亮屏或者灭屏耗电是否有异常。

2、通过选取电量值观察每格电量的消耗速度,确认耗电异常时间段和当前前台应用,网络状态,后台job等信息。

3、综合当前亮度,网络状态,后台job ,前台应用估算是否符合预期,确认是否当前配置环境问题,还是应用耗电异常。

五、常见场景案例

1. 充电慢问题:查看充电电流值,确认充电电流是否符合预期。查看充电过程是否有异常job在长时间执行,如果有异常job耗电也会降低充电电流。查看对应电池温度是否有高温现象,电池温度过高会限制充电电流。

2. 发热问题:通过batterystats查看当前发热情况,找到温度最高区间,综合当前网络,亮度,应用确认耗电情况是否符合预期。如耗电电流不大,但是温度确持续增加,大概率环境无法散热导致,比如太阳光直射,物品覆盖无法散热。

3. 亮屏耗电问题:当出现亮屏耗电时,先检查网络状态,亮度状态,是否高耗电应用。不同网络耗电排行5G>4G>wifi,高亮下耗电会急剧增加,游戏相机场景会耗电大。

如下场景是用户反馈白天耗电快场景,4G下,高亮,加上后台GPS长时间定位,引起亮屏使用耗电大。

4. 息频耗电问题:息屏场景,部分app会通过音频持锁来给自己保活。通过查看audio和wakelock状态可以确认此类问题。app频繁网络包唤醒系统(应用唤醒频次低于1min),同样也会引起耗电快。

如下场景就是用户反馈息屏耗电快场景,从batteryhistorian可以看到xfPlay,一直持有音频锁给自己保活,导致系统无法休眠从而息屏耗电。

5. 息屏异常耗电问题:所有信息都符合预期,但是还是耗电快,此种情况可能是有异常器件漏电问题。

如下场景息屏耗电场景,唤醒周期超过2min,休眠比良好,但是耗电依旧很大。有可能是器件漏电,需要专业功耗工程师进一步分析。

6. 电量追赶问题:当发现耗电电流超过理论值,并且无异常发热,大概率是出现了电量追赶问题。当计算出来的真实电量和实际电量有差异时,实际电量就会快速下降追赶至真实电量,表现就是30s或者60s一格电的速度去追赶(各家参数会有差异)。

如下息屏耗电场景,平均耗电电流5466ma,理论手机不会出现这么大电流(手机平均电流极限2A左右,如是真实耗电会伴随大量发热)。此时温度正常,大概率是出现了虚电,电量追赶问题,需要从kernel 日志进一步分析确认。

六、小结

Batteryhistorian图形化工具,可以非常直观查看历史耗电信息,追溯到耗电场景。对于一般用户,Batteryhistorian分析简单耗电问题已经足够。对于更深的耗电问题,则需要更多的辅助日志或者dump 由更专业工程师进一步分析。

参考文献:https://developer.android.google.cn/topic/performance/power/setup-battery-historian

扫码关注
“内核工匠”微信公众号
Linux 内核黑科技 | 技术文章 | 精选教程

BatteryHistorian Android手机耗电分析神器相关推荐

  1. Android后台耗电分析及优化

    原文见: 在路上的blog Android后台耗电分析及优化 一.什么是耗电优化? 二.耗电优化第一个方向:优化后台耗电 1.唤醒锁定操作卡住(前台&后台) 2.唤醒次数过多 3.WLAN扫描 ...

  2. android app耗电分析方法

    这是一篇讲述应用耗电的文章,围绕 Android 电量采集机制及第二代 Battery Historian 分析工具讲述.文从数据采集.导出.环境搭建.解读报告的角度出发,从细节讲解整个流程.和大谈概 ...

  3. 耗电优化(上):Android App 耗电分析

    这里写目录标题 1. 电量和硬件 1.1 App 通过使用硬件模块消耗相应的电能 1.2 资源调度机制是厂商功耗优化最重要的手段 2. 电量和应用程序 2.1 评估不同应用程序的耗电情况 结论:把电量 ...

  4. Android应用耗电分析与优化

    应用的耗电是个长期持续优化的事情,而且随着Android系统的不断更新,系统本身也提供了越来越详细的信息来辅助统计分析耗电.这里基于Android 6.0介绍一些耗电分析与优化的思路及实践,一方面可以 ...

  5. android现状及发展趋势,2021年Android手机现状分析

    Android手机行业现状分析报告主要分析要点有: 1)Android手机行业生命周期.通过对Android手机行业的市场增长率.需求增长率.产品品种.竞争者数量.进入壁垒及退出壁垒.技术变革.用户购 ...

  6. Android手机流量分析工具介绍

    一.20 Best Android Hacking Apps And Tools Of 2018 首先罗列常见的Android手机hacking的工具 #1 The Android Network H ...

  7. android手机耗电快怎么办,手机耗电快怎么办、怎么解决?简单几步帮你延长手机续航...

    王者荣耀,阴阳师,崩坏3... 不少人都喜欢在空闲时间玩一下手游,但现在的手游做得都太精细了,消耗的电量也有所增加.大家是否觉得,就算带着移动电源,依然觉得手机电量还不够?如果你也遇到这种情况的话,那 ...

  8. Android App耗电分析

    项目中用到了一个比较坑爹的问题,就是App的耗电问题,发现自己开发的时候没有注意这个问题,一发布给用户就暴露了这个我平常不注意的问题挺蛋疼,平常开发我都觉得耗电是很正常的,再耗电也在可接受范围内,但是 ...

  9. android手机舆情分析,基于Android平台的环境公共舆情监督系统研究

    摘要: 近年来,随着我国社会经济的持续发展和人民生活水平的不断提高,人们的环境保护意识也在不断增长,其中城市环境质量问题逐渐成为了人们普遍关注的焦点,也成为环保部门和环保从业人员的重点研究方向.环境监 ...

最新文章

  1. markdown错误和问题
  2. 2021年春季学期-信号与系统-第四次作业参考答案-第九小题
  3. find rm配合删除文件
  4. 银行IT:研究框架(165页)
  5. Codeforces Round #716 (Div. 2)
  6. layui table reload post请求_如何实现在Layui框架中完成父窗口刷新(更新)
  7. ABS 1.1.0:更多Python和Bash提供最有趣的编程语言
  8. (DT系列四)驱动加载中, 如何取得device tree中的属性
  9. World of Warcraft .M2模型重建
  10. 汉化:Termius for Mac(SSH客户端)
  11. STM32启动模式及API(转)
  12. linux编写的员工管理系统,员工信息管理系统设计与实现(叶晖).doc
  13. Java Web图书管理系统总结(jsp+servlet+jdbc+javabean+dao)
  14. 计算机网络安全及故障谢辞,计算机网络安全初探.pdf
  15. 【BZOJ4522】密匙破解(Pollard_rho)
  16. 企查查爬虫获取公司链接
  17. activiti:initiator详解
  18. mybatisPlus中getOne方法如何只取其中一条数据(Wrapper有多条数据时)
  19. Java实现 幸运数字
  20. 学前教育专业计算机实训室,学前教育模拟实训室

热门文章

  1. 系统仿真(四):电梯系统的仿真实现
  2. 看完这篇文章轻松学会如何视频剪辑制作
  3. 基于 SpringBoot + VUE 【爱音乐管理系统】 平台设计与实现
  4. 用selenium实现用谷歌浏览器打开指定网址
  5. 基于JAVA车位管理系统计算机毕业设计源码+系统+lw文档+部署
  6. 哈夫曼树的构造(C语言)
  7. win10计算机服务打不开,win10系统计算器打不开闪退的解决方法
  8. [SQL] 怎么从子查询结果中取值
  9. 微信小程序搜索框样式
  10. SteamVr、VRTK配置