人生有三大错觉
1.手机振动
2.他喜欢我
3.我的app不耗电
软件功耗的组成
软件功耗主要包括9项
功耗项 | 解释 |
usage | 通用的功耗 |
CPU | CPU的功耗 |
wakelock | 唤醒带来的功耗 |
mobileRadio | 移动无线的功耗 |
wifi | wifi功耗 |
gps | 定位的功耗 |
sensor | 传感器的功耗 |
camera | 相机功耗 |
flashlight | 闪光灯功耗 |
功耗计算原理
1. 手机由众多“部件”组成,所谓“部件”是指:CPU,WIFI,GPS....所以,Android App消耗总电量为 App运行过程中,涉及各部件的消耗电量的总和。
2. 假设运行App导致CPU运行,时间:t,CPU单位时间消耗电量:w,则App的CPU耗电量为:W = w*t,而有物理公式 W = U*I*t(U:电压值,I:电流值),在手机中,一般U恒定不变,所以,可以单独通过 Q(电容量,单位: mAh)= I * t 表示电量。
其他软件耗电项的计算原理与2中的计算原理相同。
总的耗电量=usage耗电量+CPU耗电量+wakelock耗电量+mobileRadio耗电量+wifi耗电量+gps耗电量+Sensor耗电量+camera耗电量+flashlight耗电量
Battery Historian for windows环境搭建
简介:Battery historian是一款通过上传bugreport文件分析用户手机中App的电池耗电情况的工具。
Battery Historian 1.0 通过python脚本转换成html文件,而新版本 Battery Historian 2.0 发布了,新版本带来了很多的改进:更清晰的报告,每个应用程序的摘要,更快的执行等等。
步骤
一、首先安装Go编程语言
- 下载安装程序;
- 安装Go;
- 配置GOROOT和GOPATH
a. GOROOT的作用是告诉Go 命令和其他相关工具,在哪里去找到安装在你系统上的Go包,所以这里配置的是GO的安装目录
b.GOPATH可以简单理解为是工程的目录,所以创建一个GO的工程路径
C.最后配置一下环境变量,把Go的bin目录放到path环境变量中
4. 检查Go是否安装成功,打开命令行输入Go version
二、安装Git
目前版本控制也都是GIT,所以基本上所有的电脑都已经安装,该步骤略过,可自行百度安装。
三、安装Python
- 下载安装程序
- 安装完成;
- 环境变量配置,添加Path的路径,是Python的安装路径
- 输入命令行 python –V(注意是大写V)检查是否安装成功
四、下载Battery Historian源码并且运行
- 输入命令行go get -d -u github.com/google/battery-historian/..
- **下载到GOPATH配置目录下
- 进入到$GOPATH/src/github.com/google/battery-historian目录下方
- 运行Battery Historian a. go run setup.go
# Compile Javascript files using the Closure compiler
$ go run setup.go
1.1 重置电池数据收集数据
adb shell dumpsys batterystats --enable full-wake-history
adb shell dumpsys batterystats --reset
我们通过以上命令来打开电池数据的获取以及重置,清除干扰的数据
1.2 获取电量报告
把数据线直接拔掉(防止数据线造成充放电数据干扰),现在做一些测试,手动或者跑一些自动化的case都行。经过一段时间后,我们重新连接手机确认adb连上了,运行下面这条命令来将bugreport的信息保存到txt文档中。
adb bugreport >D:\bugreport.txt
备注:一般厂商报问题的时候,也会提供该日志文件,可以将该日志文件导入Battery Historian中进行分析。
1.3 使用battery-historian工具图形化报告
启动命令行,在cmd中进入本地go wakespace中的\src\github.com\google\battery-historian目录下,执行
go run cmd/battery-historian/battery-historian.go
打开浏览器,进入http://localhost:9999/网址,然后选择导入bugreport.txt文件,即可进入到图形化展示界面。
横轴是时间轴,纵轴代表的每个耗电项的耗电情况。另外,往下滑,可以选择具体的应用,