您所在的位置: > 主页 > 华夏经济网 > 资讯 > 正文
Android电量优化之电量测试来源: 日期:2020-10-18 10:52:05  阅读:-

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

    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 充电

    (正文已结束)

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