性能优化之电量优化2-使用Battery Historian生成电量消耗报告

1 数据准备

1.1 先断开adb服务,然后开启adb服务

(a)adb kill-server 

这一步很重要,因为当我们开发时做电量记录时会打开很多可能造成冲突的东西。为了保险起见我们重启adb。adb devices就会自动连接查找手机。

备注:mac可以直接使用adb命令;但是windows不行,需要进入到adt下:adt-bundle-windows-x86_64-20140702\adt-bundle-windows-x86_64-20140702\sdk\platform-tools 操作adb命令。

(b)adb start-server

重启adb。

1.2 重置电池数据收集数据

(c)adb shell dumpsys batterystats --enable full-wake-history

(d)adb shell dumpsys batterystats --reset

我们通过以上命令来打开电池数据的获取以及重置,清除干扰的数据,执行的效果如下:

1.3 获取电量报告

把数据线直接拔掉(防止数据线造成充放电数据干扰),现在做一些测试,手动或者跑一些自动化的case都行。经过一段时间后,我们重新连接手机确认adb连上了,运行下面这条命令来将bugreport的信息保存到txt文档中:

(e)adb bugreport > bugreport.txt

或者用下面的命令也可以,加上包名可以限制输出的数据是我们要检测的。:

(e.1)adb shell dumpsys batterystats > batterystats.txt

(e.2)adb shell dumpsys batterystats > com.example.android.sunshine.app > batterystats.txt

注意:

json: unsupported value: NaN

有人用了描述:the problem started when reset the battery stats and enabled full-wake-history。

解决:重启手机再试就好了。

1.4 使用battery-historian工具图形化报告

到此我们有两种方式分析这个文件:(historian-V1之前的版本 和historian-V2最新的版本),详细在第二、三章分析。

2 historian-V1之前的版本分析方式

2.1 将txt文档转化为html文件,命令如下:

(f)python historian.py -a bugreport.txt > battery.html

2.2 环境配置

(1)python 未安装需要先安装python环境,并配置path,否则无法使用python命令。备注:mac可能不需要安装。

(2)historian.py脚本是Python写的,所以需要historian脚本,从github工具开源地址:上下载这个脚本。文件在github上面的scripts目录下面,需要下载到命令行所在的目录:

2.3 Google浏览器打开html文件

(1)注意:浏览器显示满屏的文字+英文,无法生成图形报告,或者打开生成的HTML显示错误如下,WARNING: Visualizer disabled. If you see this message, download the HTML then open it。

解决:需要使用vpn翻墙访问谷歌服务。

(2)上面两条命令执行成功后,会在目录下发现两个文件bugreport.txt和battery.html,这个时候我们用google浏览器打开html文件,可以看到如下信息:

2.4 Battery History报告各个参数的意义

重要的参数:WiFi、wake_lock、conn、mobile_ratio(蜂窝信号)

(1)横坐标

上面的30,0代表的就是秒的意思,它是以一分钟为周期,到第60秒的时候变为0。横坐标就是一个时间范围,咱们的例子中统计的数据是以重置为起点,获取bugreport内容时刻为终点。我们一共采集了多长时间的数据,图表下也有信息说明。(经其他人的反馈,这个坐标间隔是会随着时间的长度发生改变,所以要以你的实际情况为准)

(2)纵坐标

纵坐标的数据就很麻烦了,数据量太多,一条一条来吧。

(3)battery_level

电量,可以看出电量的变化。比如上图中的数据显示刚开始电量是100%,然后在第11秒-12秒中间的某个时刻降到了99%。

(4)plugged

充电状态,这一栏显示是否进行了充电,以及充电的时间范围。例如上图反映了我们在第22s插入了数据线,然后一直持续了数据采集结束。

(5)screen

屏幕是否点亮,这一点可以考虑到睡眠状态和点亮状态下电量的使用信息。

(6)top

该栏显示当前时刻哪个app处于最上层,就是当前手机运行的app,用来判断某个app对手机电量的影响,这样也能判断出该app的耗电量信息。该栏记录了应用在某一个时刻启动,以及运行的时间,这对我们比对不同应用对性能的影响有很大的帮助。

(7)wake_lock*

wake_lock 该属性是记录wake_lock模块的工作时间。是否有停止的时候等

(8)running

界面的状态,主要判断是否处于idle的状态。用来判断无操作状态下电量的消耗。

(9)wake_lock_in*

wake_lock有不同的组件,这个地方记录在某一个时刻,有哪些部件开始工作,以及工作的时间。

(10)gps

gps是否开启

(11)phone_in_call

是否进行通话

(12)Sync

是否跟后台同步.

可以把鼠标停在某一项上面。可以看到何时sync同步 启动的,持续时间Duration多久。电池容量不会显示单一行为消耗的具体电量,这里只能显示使用电池的频率和时长,你可以看分时段的剩余电量来了解具体消耗了多少电量。

(13)Job

后台的工作,比如服务service的运行。从下面图中可以看到qihoo的AppStore和鲁大师都在运行后台服务。

(14)data_conn*

数据连接方式的改变,上面的edge是说明采用的gprs的方式连接网络的。此数据可以看出手机是使用2g,3g,4g还是wifi进行数据交换的。这一栏可以看出不同的连接方式对电量使用的影响。

(15)status

电池状态信息,有充电,放电,未充电,已充满,未知等不同状态。

这一栏记录了电池状态的改变信息。

(16)phone_signal_strength

手机信号状态的改变。

这一栏记录手机信号的强弱变化图,依次来判断手机信号对电量的影响。

(17)health

电池健康状态的信息,这个信息一定程度上反映了这块电池使用了多长时间。

这一栏记录电池状态在何时发生改变,上面的图中电池状态一直处于good状态。

(19)plug

充电方式,usb或者插座,以及显示连接的时间。

这一栏显示了不同的充电方式对电量使用的影响。

3 historian-V2最新的版本的方式

备注:本方法由于翻墙等原因还没确定是否成功。

3.1 链接参考

(1)工具开源地址: https://github.com/google/battery-historian

(2)Install Docker安装路径:https://docs.docker.com/engine/installation/

(3)参考项目安装 Docker

https://docs.docker.com/docker-for-windows/

http://wiki.jikexueyuan.com/project/docker/installation/mac.html

3.2 安装Docker环境来安装Battery History

(1)描述

根据gitbub上面介绍,Battery History工具的安装有两种方式:

A、通过安装Docker环境来安装。(这种方式很简单,Docker真心好用,太彪悍了!)

B、安装GO环境、Git环境、Python、Java环境(不推荐)

(2)Docker环境

Docker是一种容器,一般用于云计算和大数据平台。提倡的一种思想就是:软件即服务。这句话不是盖的,一句话就可以将别人发布的docker服务环境一次全部copy过来(注意是整个软件环境哦,相当于复制了一台一模一样的主机,连软件都不要安装了,全有了。彪悍吧!)

Docker只支持Windows10(mac貌似也支持)

(3)Docker安装注意问题:翻墙

A、进部署好的服务器docker,显示错误如下:

{“UploadResponse”:[{“sdkVersion”:23,”historianV2Cs…

https://github.com/google/battery-historian/issues/64

解决:You need a network connection.需要翻墙。 动脑的centos无法翻墙访问谷歌服务导致。

B、进部署好的动脑服务器docker,没有显示错误,但是最上面提示了红色的颜色块,表示访问出错。

解决:无法翻墙访问谷歌服务导致。

(4)操作命令

Gitbub上面是这样的命令及地址:

docker -- run -p <port>:9999 gcr.io/android-battery-historian:2.1 --port 9999

这个里面的地址貌似不能用(可能是翻墙软件屏蔽了的原因),然后找到了一个老外的镜像,是2.0版本的。(镜像地址:blystad/battery-historian或者bhaavan/battery-historian)

关键:

docker -- run -p 6666:9999 blystad/battery-historian --port 9999

或者命令如下(上面这种是临时开辟的程序服务,下面是开启了一个单独系统服务更正规的服务。):

docker run -d –p 9999:9999 bhaavan/battery-historian

3.3 导出手机的Bugreport日志

输入指令 adb bugreport > bugreport.txt导出

3.4 上传bugreport.txt文件至 http://localhost:9999

时间: 2024-08-28 18:15:21

性能优化之电量优化2-使用Battery Historian生成电量消耗报告的相关文章

Android电量优化

最近领导老是反映说我们的APP耗电要比以前厉害一些,排在耗电量的首位,上黑名单了,需要进行电量优化!经过一段时间的研究,自己做了一部分的总结! 电量优化的工具battery-historien battery-historien是google开源的电量检测分析的工具,由于很多APP开发者对电量这快关注不是那么多,star数并不是特别多! 链接:https://github.com/google/battery-historian上面有具体环境搭建步骤! 环境搭建步骤 我使用的是方法二,步骤如下:

MySQL 数据库性能优化之SQL优化

前言 有人反馈之前几篇文章过于理论缺少实际操作细节,这篇文章就多一些可操作性的内容吧. 注:这篇文章是以 MySQL 为背景,很多内容同时适用于其他关系型数据库,需要有一些索引知识为基础. 优化目标 1.减少 IO 次数 IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO 次数是 SQL 优化中需要第一优先考虑,当然,也是收效最明显的优化手段. 2.降低 CPU 计算 除了 IO 瓶颈之外,SQL优化中需要考虑的就

Web性能优化:图片优化

程序员都是懒孩子,想直接看自动优化的点:传送门 我自己的Blog:http://blog.cabbit.me/web-image-optimization/ HTTP Archieve有个统计,图片内容已经占到了互联网内容总量的62%,也就是说超过一半的流量和时间都用来下载图片.从性能优化的角度看,图片也绝对是优化的热点和重点之一,Google PageSpeed或者Yahoo的14条性能优化规则无不把图片优化作为重要的优化手段,本文覆盖了Web图片优化的方方面面,从基本的图片格式选择.到尚未被

Android 性能优化 三 布局优化ViewStub标签的使用

小黑与小白的故事,通过虚拟这两个人物进行一问一答的形式来共同学习ViewStub的使用 小白:Hi,小黑,ViewStub是什么?听说可以用来进行布局优化. 小黑:ViewStub 是一个隐藏的,不占用内存空间的视图对象,它可以在运行时延迟加载布局资源文件.(更多详细的API等信息可以查看官方文档ViewStub),计算机行业一向是实践里面出真知,下面用一个例子演示下效果. 小黑:说说概念只是为了概括性的了解下,还是用个实例来演示下.先来创建一个Activity中使用的布局文件,文件名是:act

MySQL 性能优化---索引及优化

博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 一.MySQL性能优化之-影响性能的因素 1.商业需求的影响 Myisam存储引擎内置一个计数器,count(*)时直接从计数器读取:而通过innodb存储引擎查找某个数据时,是必须扫描全表的,所以当执行对表的统计(即使用count(*)函数)时,myisam要比innodb要快的很多.所以一般在innodb上执行count(*)时一般要

Mysql性能优化----SQL语句优化、索引优化、数据库结构优化、系统配置优化、服务器硬件优化

一.SQL语句优化 1-1.MySQL慢日志 1).慢日志开启方式和存储格式 如何发现有问题的SQL? 使用Mysql慢日志对有效率问题的SQL进行监控 前期准备 mysql> show variables like '%log_queri%'; +-------------------------------+-------+ | Variable_name | Value | +-------------------------------+-------+ | log_queries_no

MYSQL数据库性能优化之SQL优化【一】

转载:http://wulijun.github.io/2012/08/24/mysql-sql-optimization.html 优化目标 减少 IO 次数 IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占 用的,减少 IO 次数是 SQL 优化中需要第一优先考虑,当然,也是收效最明显的优化手段. 降低 CPU 计算 除了 IO 瓶颈之外,SQL优化中需要考虑的就是 CPU 运算量的优化了.order by, group b

性能优化之数据库优化

1.索引 简单的说,索引就像书本的目录,目录可以快速找到所在页数,数据库中索引可以帮助快速找到数据,而不用全表扫描,合适的索引可以大大提高数据库查询的效率.(1). 优点大大加快了数据库检索的速度,包括对单表查询.连表查询.分组查询.排序查询.经常是一到两个数量级的性能提升,且随着数据数量级增长. (2). 缺点索引的创建和维护存在消耗,索引会占用物理空间,且随着数据量的增加而增加.在对数据库进行增删改时需要维护索引,所以会对增删改的性能存在影响. (3). 分类a. 直接创建索引和间接创建索引

性能诊断与SQL优化

AUTOTRACE 功能辅助SQL优化 安装, 参考PL/SQL环境设置博文 autotrace 常用选项: set autotrace off, 不生成autotrace 报告, 这是缺省值 set autotrace on explain: autotrace 只显示优化器执行路径报告 set autotrace on statistics: 只显示执行统计信息 set autotrace on: 即包含统计信息, 又包含执行计划 set autotrace traceonly: 同set