Battery Historian是开源的工具,代码链接地址。
工具可以用于分析Android(5.0及以上)设备——不插电前提下——运行过程中电池相关的信息和事件。工具可使应用开发者基于移平移和缩放功能的时间线可视化系统和应用级别的事件,查看自从上次设备满电后各种聚合统计信息,以及选择一个应用程序分析影响电池的指标。
安装方式一般两种方式,Docker和源码编译方式。
主要参考battery-historian github的描述开始进行安装。
第一种方式使用Docker安装,首先是安装Docker,按照自己的开发环境,操作系统及需要的版本选择对应的Docker安装。
运行Battery Historian镜像。
docker -- run -p <port>:9999 gcr.io/android-battery-historian/stable:3.0 --port 9999
其中参数 自行选择设置。
对于Linux或者Mac OS X来说到这里就安装运行结束了,可以通过地址 http://localhost: 访问Historian。
对于Windows来说,要运行其Historian镜像:
windows开启虚拟功能
进入到windows控制面板 程序,选择程序和功能 菜单下启用或关闭windows功能项,在打开的Wwindows功能窗口中勾选Hyper-V功能,启用虚拟功能。(该步骤也可以是在Docker安装时进行勾选,由安装程序帮助完成)
需要fq
命令
docker -- run -p <port>:9999 gcr.io/android-battery-historian/stable:3.0 --port 9999
需要PC是在可访问外网的前提下,需要fq。
在安装Docker后,想运行Battery Historian镜像,开启Hyper-V(虚拟功能),会带来问题。
问题
首先需要确保系统中有至少是Go 1.8.1的环境。
还需要安装Git,Python(2.7版本,不是3.x版本),JDK环境。
在各环境准备好后下载Battery Historian源码及相关依赖:
go get -d -u github.com/google/battery-historian/...
命令
go get -d -u github.com/google/battery-historian/...
的执行也需要fq,但凡需要从google官方download库似乎均需要fq操作。
因此需要进行fq操作,可以通过设置goproxy来进行合理的下载go的官方库。
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.io,direct
这个网址可以直接访问,是一个专门做go模块代理的网站,可以使用。
在设置上述环境变量之后,再执行 go get 命令,可以看到下载进度了。
到这里执行结局后可以看到在下载目录下,设置代理地址后下载完成 是一个pkg目录,在了解GO项目的目录结构后,pkg是存放编译过程中产生的中间文件的目录。且在pkg目录中也尝试了各种命令运行,依然是无法执行通过。
setup.go:30:2: cannot find module providing package github.com/google/battery-historian/bugreportutils: working directory is not part of a module
setup.go:31:2: cannot find module providing package github.com/google/battery-historian/historianutils: working directory is not part of a module
为了解决这个问题,放弃执行
go get -d -u github.com/google/battery-historian/...
的结果,使用单步执行命令的方式。
go get -u github.com/golang/protobuf/proto
go get -u github.com/golang/protobuf/protoc-gen-go
go get -u github.com/google/battery-historian
进入到 battery-hostorian 目录后运行setup.go程序,会发现依然存在 working directory is not part of a module 的错误提示。
这样可以执行js部分的编译,在最后依据提示可以看到执行是失败的。
因此重新执行如下几个命令,如图中所示,具体的操作解析我也么有具体了解,但在执行后再次运行 go run setup.go 命令就通过了。
在运行setup.go过程中可能会在最后发现有提示如下
会发现closure-library库内的js错误。
出现了js编译过程的错误,不影响在浏览器中打开页面——即可以在浏览器中看到运行结果,但无法准确执行上传bugreport后的渲染结果。
因此需要手动替换closure-library库的版本。
结合closure-library github issue内的提问答案,将closure-library替换为tag v20170409版本,将下载的源码zip包文件放置于 src/github.com/google/battery-historian/third_party 目录下,间压缩后重命名后,再次运行setup.go程序,就可以看到正常执行结果。
在上述之后battery historian工具是编译安装好了,接着就是尝试运行。
在命令行中执行命令
go run .\cmd\battery-historian\battery-historian.go
然后在浏览器中输入 http://localhost:9999/ 地址(默认端口号是9999),等待响应即可——不论是错误或是成功,需要等待一会儿。
我这里打开结果是正常的。
在Android 7及以上设备上运行命令:
adb bugreport bugreport.zip
在Android 6以及以下设备上运行命令:
adb bugreport > bugreport.txt
导出的结果在设备文件系统根目录下面的bugreports目录下,需要将其导出到本地PC机。
在浏览器中选择导出的bugreport.zip或bugreport.txt文件,点击submit后,即可查看到渲染结果。
接着依据需求,自行分析需要的数据。
除了自己进行编译使用外,还可以直接利用在线方式进行渲染查看,操作方式一致。
直接访问:https://bathist.ef.lc/,上传bugreport文件即可。