国内地区Docker上安装battery-historian

首先,咱们须要将Battery Historian工具在本地跑起来,要跑起来能够选择使用docker,也能够选择编译源码。html

(1)若是是使用Mac或Linux平台的话,推荐直接经过docker运行Battery Historian来完成linux

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

以后在浏览器中输入 http://localhost:9999 就能够看到效果,而后上传bugreport文件进行分析了。android

上面的步骤都完成以后就能够启动Battery Historian了,默认端口是9999git

$ go run cmd/battery-historian/battery-historian.go

待控制台输出listening on port:9999的时候,能够打开浏览器输入 http://localhost:9999 就能够看到github

img

其次,这个版本的输入是bugreport文件,根据系统版本不一样它的获取方式略有差异:
若是是Android 7.0及以上版本的话能够经过 adb bugreport bugreport.zip 来获取bugreport
若是是Android 6.0及如下版本的话能够经过 adb bugreport > bugreport.txt 来获取bugreportdocker

获取到bugreport文件以后,咱们就能够将其上传到Battery Historian上进行分析,下面是它的输出结果shell

img

在页面的下方咱们能够查看这段时间内系统的状态system stats,也能够选择某个应用查看应用的状态app statswindows

img

其中咱们能够看到Device estimated power use中显示了估算的应用耗电量值为 0.18%浏览器

Battery Historian还有个比较功能,在首页选择 Switch to Bugreport Comparisor,而后就能够上传两个不一样的bugreport文件,submit以后就能够看到它们的对比结果了,这个功能用来分析同一个应用的两个不一样版本先后的耗电量很是有用。性能优化

img

须要注意的是,通常开始统计数据以前须要使用下面的命令将之前的累积数据清空

adb shell dumpsys batterystats --reset

By default, Android does not record timestamps for application-specific userspace wakelock transitions even though aggregate statistics are maintained on a running basis. If you want Historian to display detailed information about each individual wakelock on the timeline, you should enable full wakelock reporting using the following command before starting your experiment:

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

关于bugreport相关的知识推荐阅读Android adb bugreport工具分析和使用这篇文章,做者简单地从源码角度分析了adb bugreport命令的运行原理,结论是bugreport实际上是启动了dumpstate服务来输出数据,其中数据来源包括:
1.系统属性
2./proc和/sys节点文件
3.执行shell命令得到相关输出
4.logcat输出
5.Android Framework Services信息基本使用dumpsys命令经过binder调用服务中的dump函数得到信息

下面是其余的几篇关于battery-historian使用的文章可供参考
(1)Android性能专项测试之battery-historian使用
(2)Android性能专项测试之Batterystats
(3)Battery Historian 2.0 for windows环境搭建

3.关于电量方面的Android性能优化
电量方面的性能优化能够参考 性能优化典范中的Android性能优化之电量篇

主要有如下两点:
(1)为了减小电量的消耗,在蜂窝移动网络下,最好作到批量执行网络请求,尽可能避免频繁的间隔网络请求
(2)使用Job Scheduler,应用须要作的事情就是判断哪些任务是不紧急的,能够交给Job Scheduler来处理,Job Scheduler集中处理收到的任务,选择合适的时间,合适的网络,再一块儿执行

 Hujiawei is a mobile developer  Guangdong, China  https://hujiaweibujidao.github.io/本博客全部文章均为原创,请勿随意转载,如需转载请联系我 (hujiawei090807 AT gmail.com)我在小专栏有个移动开发技术专栏,不按期分享移动开发的核心技术,总结移动开发的实战经验

参考

https://hub.docker.com/r/bhaavan/battery-historian/

相关文章
相关标签/搜索