设为首页 加入收藏
您当前位置 > 大河新闻网 > 资讯 > 正文
>
分享
新浪微博
腾讯微博
微信
QQ空间
QQ好友
手机阅读分享话题

Android电量优化之电量测试

2020-10-18 14:33:22阅读:- 来源:
电量测试,就是测试移动设备电量消耗快慢的一种测试方法。一般用平均电流来衡量电量消耗速度。平均电流越小,说明设备使用时间越长。但是平均电流多大才说明不耗电却没有一个统一标准。包括:1、硬件测试:利用硬件

电量测试,就是测试移动设备电量消耗快慢的一种测试方法。一般用平均电流来衡量电量消耗速度。平均电流越小,说明设备使用时间越长。但是平均电流多大才说明不耗电却没有一个统一标准。包括:

1、硬件测试:利用硬件设备测试被测设备的电流,统计一段时间内(使用某个功能模块)的平均电流值。

2、软件测试:利用系统工具导出分析报告

本文只介绍软件测试

进行软件测试需安装Battery Historian,它是google开源的电池历史数据分析工具。详细介绍可以参考https://github.com/google/battery-historian。

Battery Hostorian的安装

安装Battery Historian的方式有两种:分别为Docker与源码编译安装,对于Windows docker需要Windows 10,并且进入bios开启虚拟化。

1、Docker安装。

Docker 是一个开源的应用容器引擎,一般用于云计算和大数据平台,可以一键将别人发布的docker服务环境copy过来。

Docker有Community Edition (CE 社区版) and Enterprise Edition (EE 企业版)两种版本,我们使用社区版就可以了。

Android电量优化之电量测试

安装docker

安装好Docker之后,github上让我们运行

Android电量优化之电量测试

运行docker

但是这个地址貌似需要翻墙。我们可以使用镜像

docker run -p 9999:9999 blystad/battery-historian
docker run --name=battery -d -p 9999:9999 bhaavan/battery-historian
Android电量优化之电量测试

运行docker

一段漫长的等待……,然后

Android电量优化之电量测试

启动成功

表示启动成功了。

2、源码编译安装。

需要存在go、git、python与java环境。

对于linux/Mac一般默认会携带python与git,如果不存在或者版本不正确也可以(brew install)。

sudo apt-get install golang
sudo apt-get install git
sudo apt-get install python2.7

2.1 安装go

Go 和java一样是一个编程语言,并且是开源的。因为Battery Historian使用了go来开发,所以我们需要安装go环境,最低需要 1.8.1的版本。

https://golang.org/dl/

选择自己需要安装的系统下载。第二列的Kind表示类型,有source源码(需要自己编译安装)、Installer安装器(下一步、下一步安装)与Archive编译好的(需要配置环境变量)。

Android电量优化之电量测试

go版本列表

安装完成后,使用go version

我们需要确保能够调起go工具,否则需要配置go环境变量。

Windows的在我的电脑右键属性进入配置。

Linux/Mac的则在~/.bashrc 或者 ~/.profile 或者~/.bash_profile 都可以。

我们需要配置go的bin目录进入Path变量,这点和java一样,表示go相关工具的查找路径。另外还需要配置一个GOPATH,GOPATH就是我们工程的目录。

比如我们的工程目录在$HOME/work,则配置如下:

Android电量优化之电量测试

go环境配置

因为我下载的是kind 是 Instanller,所以直接配置一个GOPATH就可以了

Android电量优化之电量测试

GOPATH配置

然后保存退出。创建这个GOPATH目录,留待使用

Android电量优化之电量测试

2.2 Git工具

git工具我们应该都不陌生。和svn一样,Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

https://git-scm.com/downloads

我们按照提示来进行安装就可以了,安装完成可以使用git version 检查是否按照成功。

2.3 安装Python

python必须使用2.7的版本,

https://www.python.org/downloads/

按照提示按照。同样需要配置python的目录到Path环境变量。

安装完成可以使用python –V 检查是否按照成功。

2.4 安装java

http://www.oracle.com/technetwork/java/javase/downloads/index.html

java没什么好说的了。下载安装,配置环境变量……

4个工具都安装完成之后,我们就可以下载BH源码并运行了

我们进入GOPTAH目录,下载源码与其依赖,然后我们运行bh:

cd $GOPATH/src/github.com/google/battery-historian
go run setup.go
go run cmd/battery-historian/battery-historian.go

这样就运行起来了。

以后我们需要运行,也必须每次进入GOPATH目录

cd $GOPATH/src/github.com/google/battery-historian
go run cmd/battery-historian/battery-historian.go

然后我们可以访问http://localhost:9999/

Android电量优化之电量测试

电量分析页面

导出bugreport电量分析报告

对于SDK25开始 bugreport 必须在7.0以上设备才能使用。重置:

adb shell dumpsys batterystats --reset

获取完整的wakelock信息:

	adb shell dumpsys batterystats --enable full-wake-history 

拔掉USB(让设备不处于充电状态),等待一段时间

获得报告:

	>7.0
adb bugreport bugreport.zip
<=6.0
adb bugreport > bugreport.txt
Android电量优化之电量测试

adb导出电量分析报告

分析报告界面介绍

1、将bugreport.txt或者bugreport.zip到入到http://localhost:9999/中自动分析如下图:

Android电量优化之电量测试

分析结果

Android电量优化之电量测试

查看某个app电量占用

2、分析参数说明

  • WakeLock级别

PARTIAL_WAKE_LOCK:保证CPU保持高性能运行,而屏幕和键盘背光(也可能是触摸按键的背光)关闭。一般情况下都会使用这个WakeLock。

ACQUIRE_CAUSES_WAKEUP:这个WakeLock除了会使CPU高性能运行外还会导致屏幕亮起,即使屏幕原先处于关闭的状态下。

ON_AFTER_RELEASE:如果释放WakeLock的时候屏幕处于亮着的状态,则在释放WakeLock之后让屏幕再保持亮一小会。如果释放WakeLock的时候屏幕本身就没亮,则不会有动作。

API17被弃用的WakeLock:保持屏幕长亮
1、SCREEN_DIM_WAKE_LOCK:保证屏幕亮起,但是亮度可能比较低。同时键盘背光也可以不亮。
2、SCREEN_BRIGHT_WAKE_LOCK :保证屏幕全亮,同时键盘背光也亮。
3、FULL_WAKE_LOCK:表现和SCREEN_BRIGHT_WAKE_LOCK 类似,但是区别在于这个等级的WakeLock使用的是最高亮度。
推荐是用WindowFlagWindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON。使用方法是在Activity中:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
在布局中添加这个属性:android:keepScreenOn="true";
  • CPU runingcpu运行的状态,是否被唤醒
  • Kernel only uptime只有内核运行时间
  • Activity Manager Proc活跃的用户进程
  • Mobile network type网络类型
  • Mobile radio active移动蜂窝信号 BP侧耗电
  • Crashes(logcat)某个时间点出现crash的应用
  • Doze是否进入doze模式
  • Device active和Doze相反
  • JobScheduler异步作业调度
  • SyncManager同步操作
  • Temp White List电量优化白名单
  • Phone call是否打电话
  • GPS是否使用GPS
  • Network connectivity网络连接状态(wifi、mobile是否连接)
  • Mobile signal strength移动信号强度(great\good\moderate\poor)
  • Wifi scan是否在扫描wifi信号
  • Wifi supplicant是否有wifi请求
  • Wifi radio是否正在通过wifi传输数据
  • Wifi signal strengthwifi信号强度(great\good\moderate\poor)
  • Wifi runningwifi组件是否在工作(未传输数据)
  • Wifi on同上
  • Audio音频是否开启
  • Camera相机是否在工作
  • Video是否在播放视频
  • Foreground process前台进程
  • Package install是否在进行包安装
  • Package active包管理在工作
  • Battery level电池当前电量
  • Temperature电池温度
  • Logcat misc是否在导出日志
  • Plugged 充电

(正文已经结束)

推荐阅读:吉林视窗

免责声明及提醒:此文内容为本网所转载企业宣传资讯,该相关信息仅为宣传及传递更多信息之目的,不代表本网站观点,文章真实性请浏览者慎重核实!任何投资加盟均有风险,提醒广大民众投资需谨慎!