Android 常用下令和工具剖析之Battery Historian

打印 上一主题 下一主题

主题 969|帖子 969|积分 2907

一、Battery Historian

Batterystats是包罗在 Android 框架中的一种工具,用于收集装备上的电池数据。您可以使用adb bugreport下令抓取日记,将收集的电池数据转储到开辟机器,并天生可使用 Battery Historian 分析的陈诉。Battery Historian 会将陈诉从 Batterystats 转换为可在浏览器中查察的 HTML 可视化内容。适合的场景:


  • 表现历程从什么位置以及通过何种方式消耗电池电量
  • 识别系统为了延伸电池续航时间大概会延迟以致移除应用中的哪些使命。
当装备在使用电池的时间,它可以使开辟者们看到系统级和应用级事件图表,在图表时间轴上可以缩放和平移,可以或许直观的看到自上一次充满电到现在装备电池的统计汇总信息,它可以选中一个应用程序来查抄该应用影响电池电量的一些参数,并且可以对比两个bugreport文件信息分析,并对其电池关键区别点做高亮表现。
Battery Historian的安装可以参考:https://download.csdn.net/blog/column/11547800/108662887
其他参考:Android性能优化系列之电量优化_android 电量优化-CSDN博客
1、基本操作

但是通常企业里面基本上都搭建了,所以直接使用剖析bugreport文件就行了,剖析后主界面如下:



  • 右上角通常选择Battery Level,即中心会出现一根黑线,那根黑线就是剩余电量
  • 左侧纵轴为一些比较关键的字段,把鼠标移动到上面会自动表现相干说明
  • 底部横轴为时间线,可以通过鼠标轮滑来放大和缩小,且时间比较精准



  • CPU running/Reboot
CPU running表示装备上 CPU 处于运动状态(非休眠状态)的时间。这是指 CPU 在处理各种使命时所花费的时间,包罗应用程序的执行、系统服务的处理以及其他系统使命。CPU running 时间通常用于衡量装备在特定时间段内的运动程度,以便评估装备的能耗情况。

如上图表示CPU持续运行了45小时,所以这里的CPU running还并不像性能分析里面的轮询片断
Reboot表示装备是否处于关机状态,如果为on表示此时关机或者休眠,注意这里不是reboot的这个事件,他和CPU running刚好出现反比,如果它为on,其他字段基本上都是空的,如下截图



  • App Processor wakeup
在 Battery Historian 中,App Processor wakeup 表示应用处理器(通常是装备上的主 CPU)从就寝状态唤醒的次数。当应用处理器从就寝状态唤醒时,它需要消耗额外的电量来执行使命,这大概会导致装备的电池消耗增加。
App Processor wakeup 是一个重要的指标,用于衡量应用程序或系统运动导致应用处理器频仍唤醒的情况。频仍的唤醒事件大概表明有一些应用程序或系统服务在不必要地唤醒装备,从而导致电池消耗增加。这大概是由于应用程序执行了过多的背景使命、使用了不当的定时器或触发器,或者存在其他导致装备频仍唤醒的问题。
个人明白此字段表示应用历程被唤醒的次数,固然这里的应用历程大概是前台历程也大概是背景历程。

如上图表示此时间点wisemine应用被唤醒一次,但是注意如果缩短时间轴,他会把相近的几次组合,即如上三个点表示三次被唤醒,合在一起如下:

Bugreport保存此字段的原理可以参考BugReport中的App Processor wakeup字段意义-CSDN博客


  • Kernel only uptime
在 Battery Historian 中,Kernel only uptime 表示装备的内核(Kernel)仅处于运行状态而不是就寝状态的时间。内核是操作系统的焦点组件,负责管理系统资源、处理使命调度、驱动装备等。当内核处于运行状态时,装备通常会消耗更多的电量。
Kernel only uptime 是一个重要的指标,用于相识装备内核在特定时间段内的运动程度。较长的 Kernel only uptime 大概表明装备的内核在处理各种系统使命时不绝处于运动状态,这大概会导致额外的能源消耗,影响装备的电池寿命。




  • Userspace wakelock/Long Wakelocks
Userspace wakelock记载Android 中PowerManagerService 的wake_lock 模块的工作时间(有使命需要唤醒CPU 时,就会开启Userspace wakelock)
Long Wakelocks记载长时间斥锁wake_lock 的历程。


  • Screen
通过监督 Battery Historian 中的 "Screen" 数据,用户可以相识装备屏幕的使用情况,包罗屏幕开启时长、亮度变化等信息。这有助于用户评估自己的屏幕使用习惯,以及相识哪些应用程序或运动大概导致屏幕开启时间过长,从而影响装备的电池寿命。

如上图红色表示屏幕是亮起来的,白色表示屏幕没有亮起来,放大时间轴之后可以或许清晰的得到屏幕亮起来的缘故原由和时长:



  • Top app
在 Battery Historian 中,"Top app" 表示在特定时间段内消耗最多电量的应用程序。这个指标可以帮助用户和开辟人员相识哪些应用程序在装备上消耗了大量的电量,从而帮助他们识别大概导致电池耗尽的应用程序或运动。
通过监督 Battery Historian 中的 "Top app" 数据,用户可以查察哪些应用程序在特定时间段内使用了大量的电量。这有助于用户优化其应用程序使用习惯,大概会减少对电量消耗较高的应用程序的使用,或者寻找更节能的替换方案。

如上图表示在此时间点最活跃的几个应用,按照持续时间排名,放大时间轴会发现,这里同样会被归并:

PS:此项如果以点的形式表现通常没有太大的意义,大概是待机状态下忽然亮屏,或者某个应用忽然启动起来;但是如果持续时间很长,就可以或许证明对应的应用大概存在非常,因为持续很长时间在持续耗电。


  • Foreground process
在 Battery Historian 中,"Foreground process" 表示在装备上处于前台运行状态的历程或应用程序。前台历程通常是用户当前正在与之交互的应用程序,因为用户正在使用这些应用程序,它们通常会占用更多的系统资源,包罗 CPU、内存和电量。
这个是指的前台历程,表示当前在装备上处于前台运行状态的历程或应用程序。这些是用户当前正在与之交互的应用程序,它们通常会占用更多的系统资源和电量。但是top app不一样,他无法指示对应应用在背景不绝运行或者不绝占用系统资源,他只能说明其时他刹时消耗的电流比较高而已。

如上表示对应的三个历程不绝在占用系统资源,持续45小时


值得注意的是,如果状态有所改变,Historian会自动区分颜色


  • JobScheduler
在 Battery Historian 中,"JobScheduler" 是指 Android 系统中的一个调度器,用于在装备空闲时执行背景使命。JobScheduler 允许应用程序安排需要在背景执行的作业或使命,以便在系统资源可用时举行处理,从而提高电量服从和系统性能。
通过使用 JobScheduler,开辟人员可以利用系统优化功能,将多个背景使命聚合在一起执行,从而减少装备唤醒次数,节省电量并减少对系统资源的占用。这有助于制止应用程序在不必要的时间频仍唤醒装备,从而提高装备的电池寿命。
PS:即JobSchedule的宗旨就是把一些不是特别告急的使命放到更合适的机遇批量处理。但是感觉他对一样平常分析好像没有什么太大的作用?



  • Activity Manager Proc
在 Battery Historian 中,"Activity Manager Proc" 是指 Android 系统中的一个关键组件,用于管理应用程序历程和运动。Activity Manager Proc 负责跟踪和管理应用程序的历程生命周期、运动状态以及与系统资源的交互。
通过监督 Activity Manager Proc 数据,可以相识应用程序在装备上的运行情况,包罗其历程的创建、烧毁、运动状态的变化等。这些信息对于分析应用程序的性能、资源利用情况以及对装备电量消耗的影响非常重要。

如上截图,红色的表示对应历程死亡的刹时,绿色表示对应历程被启动



同样如果时间轴比较小,他会把这些圆点举行组合


  • AM Low Memory / ANR
"AM Low Memory" 表示 Android 系统的 Activity Manager 在低内存条件下的一种状态。在这种情况下,系统大概会采取一些措施来开释内存,例如停止一些背景历程、清理缓存等,以确保系统的稳固性和性能。
此中"Num Process" 的数值表示在低内存条件下 Activity Manager 监督的当前历程数量。这个指标可以帮助开辟人员相识系统在低内存状态下所管理的历程数量,以及系统在开释内存时大概停止的历程数量。



  • Doze
"Doze" 表示装备的省电模式。省电模式是 Android 系统提供的一种功能,旨在延伸装备的电池寿命,通过限制应用程序的背景运动来减少电量消耗。以下是 "Doze" 中常见的三种状态及其寄义:


  • Doze Off:表示装备的省电模式已关闭,装备未进入任何省电模式。在 Doze Off 状态下,装备不会应用省电模式的限制,应用程序可以自由运行而不受 Doze 模式的影响。
  • Light Doze:表示装备处于轻度就寝模式。在 Light Doze 状态下,系统会限制某些背景运动以节省电量,但仍允许应用程序在一定程度上保持运动状态。
  • Full Doze:表示装备处于深度就寝模式。在 Full Doze 状态下,系统会极大限制应用程序的背景运动,包罗网络访问和同步操作,以最大程度地减少电量消耗。
通常为了降低功耗,我们盼望要求装备在禁止待机状态下更多的处于深度就寝模式,即PMS原生逻辑在禁止状态没有任何输入和用户锁的情况下,是否可以或许进入浅度就寝模式?进入之后又会有一些条件判定是否可以或许进入深度就寝模式?进入深度就寝模式之后背景被限制,背景网络同步操作将在一个固定的周期时间点触发,这样大大节约功耗。如果去掉Full Doze模式,那么背景使命将会频仍被唤起,大大提升功耗,可以参考后面案例。



  • Phone state
‌在Battery Historian中,Phone state表示手机通话状态,包罗是否正在通话、接听来电、拨出电话


  • "in":表示装备处于通话状态,即装备正在举行电话通话或有电话呼入的状态。
  • "out":表示装备处于拨打电话状态,即装备正在拨打电话。
  • "off":表示装备处于电话关闭状态,即装备的电话功能处于关闭状态,没有电话呼入或呼出的情况
这些差别的状态可以帮助开辟人员更好地相识装备在电话功能方面的运行状态,有助于诊断息争决与通信功能相干的问题。

如上截图可以相识到黑色的in表示当前装备正在通话中,黄色的out表示当前装备正在拨打电话


  • Phone scanning
在 bugreport 中,"hone scanning" 表示装备正在举行电话扫描的操作。电话扫描是指装备在搜索可用的移动网络信号或其他通信信号的过程。这个信息可以帮助开辟人员相识装备在扫描网络信号方面的状态。


  • "off":表示电话扫描功能处于关闭状态,即装备当前未在举行网络信号的扫描。
  • "on":表示电话扫描功能处于开启状态,即装备正在自动举行网络信号的扫描,以便毗连到可用的网络信号。



  • Network connectivity
Network connectivity表示网络毗连类型,总共如下几种类型,我们打仗多的通常WIFI/MOBLE/VPN分别表示当前使用的wifi网络/移动网络/VPN网络

偶然间大概同时使用了几种网络,如下图就会换一种颜色来表示,鼠标放到上面有详细的列表表现当前使用的网络类型



  • Mobile signal strength/Wifi signal strength
Mobile signal strength表示移动数据信号是否稳固,白色为none表示没有开启移动网络,黄色为good表示网络比较好,poor就表示网络比较差,这种情况下就越耗电
Wifi signal strength表示wifi信号是否稳固,同上在poor就表示当前wifi信号不稳固,这种情况下会持续耗电



  • Wifi scan/Wifi on/Wifi radio
Wifi ON表示当前时间段wifi功能是否打开,和settings菜单里面的wifi开关一致
Wifi radio表示当前时间段wifi硬件是否处于激活状态,注意和wifi功能举行区分
Wifi scan表示当前时间段wifi模块有没有举行wifi扫描,通常wifi扫描越频仍就越耗电




  • Wifi supplicant
在 Android 系统中,bugreport 是一个用于收集装备信息、日记和其他诊断数据的工具。在 bugreport 陈诉中,"Wifi supplicant" 是指与 Wi-Fi 毗连相干的组件,该组件负责处理装备与 Wi-Fi 网络之间的通信。以下是 "Wifi supplicant" 在 bugreport 中大概出现的一些值以及它们的寄义:


  • SCANNING:表示 Wi-Fi supplicant 正在扫描可用的 Wi-Fi 网络。在这种状态下,装备正在搜索可用的 Wi-Fi 热门。
  • ASSOCIATING:表示装备正在实验与选定的 Wi-Fi 网络创建毗连。在这个阶段,装备正在与 Wi-Fi 热门举行握手和认证过程。
  • ASSOCIATED:表示装备已经成功与 Wi-Fi 网络创建毗连。装备与 Wi-Fi 网络之间已经创建了通信通道。
  • AUTHENTICATING:表示装备正在举行 Wi-Fi 网络的认证过程。在这个阶段,装备正在验证其身份以得到对 Wi-Fi 网络的访问权限。
  • COMPLETED:表示装备已成功毗连到 Wi-Fi 网络并已准备好举行数据传输。
  • DISCONNECTED:表示装备与 Wi-Fi 网络的毗连已断开。这大概是由于信号弱、网络故障或用户手动断开毗连等缘故原由导致的。

这些状态大概同时存在,但是状态存在改变的时间,颜色肯定会不一样,如下:



  • GPS/Sensor
Sensor和GPS的值都是on和off,on表示该模块处于开启工作状态




  • Coulomb charge/Battery Level/Temperature
Coulomb charge表示装备的电荷状态,描述电池的充电量或放电量;看起来单元是mAh,并随着剩余电量的降低,这个值越小,颜色越淡,它和Battery Level成正比

Battery Level表示当前剩余电量的百分比,从麋集程度可以相识到好点是否匀称,它和电池曲线存在一些关联

Temperature表示装备当前温度,颜色越深说明温度越高



2、案例分析

2.1 应用持锁导致无法息屏


如上截图前面5个小时屏幕不绝常亮,无法息屏


从Userspace wakelock和Foreground process可以看出DECT应用持锁持续五个小时,导致无法正常息屏
2.2 应用使命导致耗电模块持续运行


如上截图可以看出45小时不绝在通话过程中,后续GPS频仍启动和扫描,让装备退出深度就寝模式

后确定和这两个应用有关系。
2.3 WIFI信号不好导致功耗高


如上截图wifi信号poor,表示信号相当不好,会增加wifi模块的耗电量
2.4 无法深度就寝导致功耗高


如上截图Doze不绝为黄色,即浅度休眠,导致背景应用频仍被唤起,后相识到此项目关闭了深度就寝。
二、电流测试

电流测试通常分为底电流测试和待机电流测试以及其他各种场景的电流。


  • 底电流:表示了当前系统的最低电流,开机飞行模式静止非常钟,让其进入深度就寝之后的电流。
  • 待机电流:通常为息屏待机,但是大概插入SIM卡,大概有其他背景历程。
  • 各种场景:根据测试的定义,例如持续放视频的电流、wifi电流等
这里先容几个仪器来举行电流相干的测试。这些仪器需要取代电源,因此需要把手机/装备的电池替换成一个假电池,如果这个假电池有电,会影响测试的正确性。
1. Agilent程控电源

步调一:加载bin文件

步调二:圈选当前电流图

当前电流图表示测试时长5分钟,平均电流为11.717mA,在结合详细场景对应为XXX电流。
Agilent的一大缺点就是无法去精确的计算某一时间段的平均电流。
2. Power monitor

步调一:毗连假电池到 Powermonitor,假电池只管不要使用大电容【注:假电池需要带 NTC 电阻,否则大概不能正常开机】
步调二:打开Powermonitor软件,设置电源恒定电压(即对手机的供电电压),一般调治范围为3.8V~4.2V,点击Set Vout弹出调治对话框,可手动设置输出电压:手机一般设置3.8V 、4.0V测试

步调三:调解参数之后可以对手机通电开始数据采集。当手机开机后,点击PowerTool界面右下方的RUN按钮,就已经开始对手机的耗电数据举行记载和曲线图表现

步调四:查察电流图,Power monitor方便的就是可以任意圈中时间段,自动计算平均电流



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

水军大提督

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表