注意:需要翻*墙~需要翻*墙~需要翻*墙~要翻*墙~翻*墙~墙
电量这一块,想做到非常精准,最好的方法是用硬件设备来测试~~
一般来说我们1不是做手机的,2不是做ROM的,要那么精准的值干嘛?有个参考的数据值就可以了么,╮(╯▽╰)╭.
电量想要测试的高大上,避免不了高大上的工具~隆重向大家介绍谷歌官方发布的<Battery Historian 2.0>电量分析工具````
[英文好的小伙伴~丢给你们一个下载地址及教程:https://github.com/google/battery-historian]
Battery Historian 2.0安装须知
1.Battery Historian 2.0使用GO语言开发~所以我们要先装GO语言,下载地址:http://golang.org/doc/install
推荐下载'.msi'傻瓜式安装即可,环境变量自动配置~很方便.装好后把'X:\Go\bin'增加在Path中,增加一个"GOPATH"顺便检查一下环境配置'GOROOT':
检查无误后,打开cmd输入"go version",显示出版本号,证明安装成功了:
2.安装'Git'和'python2.X版本'和'java',安装过程都很简单,百度一下一堆资料,都是一路下一步即可,最后记得配置环境变量:
3.1我们打开文件夹:C:\Go\bin 然后"shift+鼠标右键"->"在此处打开命令窗口"
3.2打开命令窗口后输入:go get -d -u github.com/google/battery-historian/...
大概需要等待3分钟~~
3.3接着我们到D盘查看:D:\GO\src\github.com\google\battery-historian
3.4然后"shift+鼠标右键"->"在此处打开命令窗口" 输入:go run setup.go
这个等待时间有点长了~我的网速用了10分钟左右````
3.5完成这一步之后我们的Battery Historian 2.0就安装完成了,在安装目录下,使用命令启动工具:go run cmd\battery-historian\battery-historian.go
启动时弹出对话框什么的"允许"就对了~出现上图类似情况证明启动成功~这个命令窗口不要关闭,关了工具就关了~
3.6接着用浏览器打开:127.0.0.1:9999,看看:
出现如上图,就算启动成功了~
获取'bugreport分析图'
首选,安卓版本至少要是:5.0+
然后,开启分析图:adb shell dumpsys batterystats --enable full-wake-history
最后,导出分析图:adb bugreport > bugreport.txt
时间可能会略长
使用"bugreport"
1.启动Battery Historian2.0,打开:127.0.0.1:9999
2.点击"Browse",选择刚刚导出的'bugreport.txt',点击"Submit"
3.打开以后长这样:
4.向下滑还可以选择某个package查看:
尼玛~好长~累死~
需要注意的其它点
1.Battery Historian2.0从安装到使用的时候,一定要翻*墙,因为它会加载一些国外源的前端库之类的东西.
你也可以不翻*墙使用Battery Historian2.0,然后点击浏览器的F12查看"Console"之中那些前端库加载失败了,使用国内源替换.
但是替换之后,偶尔也会出现类似原因造成的问题~~水平有限不知道为啥~所以最好的办法就是保持翻*墙.
一般都是到这个文件内替换(base):
2.注意取值过程中要保证手机是非充电状态~其实只要不插USB线就可以了,如果你设计的一系列场景中涉及到必须要插USB线的时候,可以使用下面这条命令
手机切换至非充电状态:adb shell dumpsys battery set status 1
实际上只要不是2就处于非充电状态,所以恢复可充电就把1换成2
3.通过上述方法取出的值是不断累计的结果,系统不会主动清除记录,所以采集电量之前我们要清除以前的数据,来确保新数据有更高的可依据性
清空之后,按照一系列设计好的场景,对app进行操作,最后取出数据进行分析
清空以前的旧记录:adb shell dumpsys batterystats --reset
4.电量测试是一个复杂的活,我们要知道程序之所以会耗电是因为在使用硬件资源。比如屏幕~CPU~流量,我们在收集到数据之后可能要具体问题具体分析了,比如说
如果关闭流量比开启流量更加耗电,我们就可以怀疑程序检查网络连接的代码有问题,因为在断网时应该更省电,可能是程序在一直检测网络状态导致CPU长时间大频率使用,增加耗电量。
如果发现某场景数据异常,那么首先要沏茶一壶,再找个舒服的凳子,然后来到程序猿旁边,最后心平气静的问他你在这块代码里都干啥了?
-----华丽的吐槽线-----
((╯‵□′)╯︵┻━┻ 鬼知道程序猿们会写出什么BUG)