找谁做公司网站,视频二维码生成器,响应式网站设计稿,游戏推广应该怎么推Battery-Historian是谷歌推出的一款专门分析Bugreport的工具#xff0c;是谷歌在2015年I/O大会上推出的一款检测运行在android5.0(Lollipop)及以后版本的设备上电池的相关信息和事件的工具#xff0c;是一款对于分析手机状态#xff0c;历史运行情况很好的可视化分析工具。 …Battery-Historian是谷歌推出的一款专门分析Bugreport的工具是谷歌在2015年I/O大会上推出的一款检测运行在android5.0(Lollipop)及以后版本的设备上电池的相关信息和事件的工具是一款对于分析手机状态历史运行情况很好的可视化分析工具。
当设备在使用电池的时候它可以使开发者们看到系统级和应用级事件图表在图表时间轴上可以缩放和平移能够直观的看到自上一次充满电到现在设备电池的统计汇总信息它可以选中一个应用程序来检查该应用影响电池电量的一些参数并且可以对比两个bugreport文件信息分析并对其电池关键区别点做高亮显示。
不过需要注意的是battery historian在使用时候不能在充电同时确保设备运行在Android 5.0及以上版本。而对于Android8.0及其以上版本我们更推荐使用Android Studio自带的Energy Profiler工具。
一、Battery Historian环境
battery historian分析需要安装Docker其安装和运行方法官方有详细的说明Battery Historian安装。可能在本地安装Battery Historian环境还比较繁琐此次推荐一个别人搭建好的地址https://bathist.ef.lc/。 二、生成耗电报告
耗电统计是系统组件伴随系统运行的整个过程也就是说只要系统在运行它就会一直统计耗电数据。这个统计是基于软件层面实现的不同的硬件模块配置了不同的参数然后使用算法进行估算power_profile文件的参数值OEM厂商必须测量并提供前实际值所以不同的厂商是不一样的。
另外获取统计报告的时候需要将重置统计并断开usb连接并且不能处于充电状态否则会大大影响统计的结果。下面是使用步骤
连接手机打开开发者模式然后连接adb。重置batterystats 数据, 手机始终在后台收集batterystats和其他调试信息重置的命令
adb shell dumpsys batterystats –reset
持续使用我们需要测试的应用然后导出原始bugreport数据导出的命令
//Android 7.0及以上版本
adb bugreport bugreport.zip//Android 5.0及以上版本
adb bugreport bugreport.txt
等待报告生成会生成一个bugreport.zip或bugreport.txt文件如下图。 三、Battery Historian 指标分析
打开https://bathist.ef.lc/网站选择bugreport.zip文件并上传。 等待分析结果分析完成之后系统会生成如下的图表。 图表按类别进行组织随着时间的推移显示每个类别的栏如图表的X轴上所示。不同颜色代表指标的不同状态比如Screen 红色代表亮屏白色代表关屏具体鼠标放在最左侧的️上就会自动提示。
默认情况下统计信息是在运行基础上维护的Android也不记录特定于应用程序的用户空间wakelock转换的时间戳。如果您希望Historian在时间线上显示关于每个单独唤醒锁的详细信息则应在开始实验之前使用以下命令启用完整唤醒锁报告。
adb shell dumpsys batterystats --enable full-wake-history
然后我们来看一下具体的指标分析前我们需要选择某个具体的应用 页面的右下角有几个选项卡可以用来查看一些具体的性能数据
System Stats包含系统范围的统计信息,如单元信号级别和屏幕亮度。这些信息提供了设备发生情况的整体情况。这对确保没有外部事件影响特别有用。App Stats 包含有关特定应用程序的信息。使用左侧的应用程序选择窗格中排序应用程序下拉列表对应用程序列表进行排序。可以选择一个特定的应用程序来查看应用程序下拉列表的统计信息。
同时在选择应用程序后我们还可以选择某个具体的场景进行分析如下图。 四、案例分析
使用battery historian进行电量分析时通常有如下一些套路
通过system stats 中screenon/off rate 平均亮灭屏耗电熟读可以初步确认亮屏或者灭屏耗电是否有异常。通过选取电量值观察每格电量的消耗速度确认耗电异常时间段和当前前台应用网络状态后台job等信息。综合当前亮度网络状态后台job 前台应用估算是否符合预期确认是否当前配置环境问题还是应用耗电异常。
下面看几个具体的案例场景
1充电慢问题查看充电电流值确认充电电流是否符合预期。查看充电过程是否有异常job在长时间执行如果有异常job耗电也会降低充电电流。查看对应电池温度是否有高温现象电池温度过高会限制充电电流。 2发热问题通过batterystats查看当前发热情况找到温度最高区间综合当前网络亮度应用确认耗电情况是否符合预期。如耗电电流不大但是温度确持续增加大概率环境无法散热导致比如太阳光直射物品覆盖无法散热。 3亮屏耗电问题当出现亮屏耗电时先检查网络状态亮度状态是否高耗电应用。不同网络耗电排行5G4Gwifi高亮下耗电会急剧增加游戏相机场景会耗电大。 比如下面的场景是用户反馈白天耗电快场景4G下高亮加上后台GPS长时间定位。 4息频耗电问题息屏场景部分app会通过音频持锁来给自己保活。通过查看audio和wakelock状态可以确认此类问题。app频繁网络包唤醒系统应用唤醒频次低于1min同样也会引起耗电快。 比如下面的场景用户反馈息屏耗电快场景从batteryhistorian可以看到xfPlay一直持有音频锁给自己保活导致系统无法休眠从而息屏耗电。 5息屏异常耗电问题所有信息都符合预期但是还是耗电快此种情况可能是有异常器件漏电问题。 比如下面的场景息屏耗电场景唤醒周期超过2min休眠比良好但是耗电依旧很大。有可能是器件漏电需要专业功耗工程师进一步分析。 电量追赶问题当发现耗电电流超过理论值并且无异常发热大概率是出现了电量追赶问题。当计算出来的真实电量和实际电量有差异时实际电量就会快速下降追赶至真实电量表现就是30s或者60s一格电的速度去追赶。 比如息屏耗电场景平均耗电电流5466ma,理论手机不会出现这么大电流。此时温度正常大概率是出现了虚电电量追赶问题需要从kernel 日志进一步分析确认。
Battery Historian图形化工具可以非常直观查看历史耗电信息追溯到耗电场景。对于一般用户Battery Historian分析简单耗电问题已经足够。不过对于更深的耗电问题则需要更多的辅助日志或者dump 由更专业工程师进一步分析。
原文地址:滑动验证页面https://segmentfault.com/a/1190000043378961