使用Battery Historian工具进行Android耗电分析

Battery Historian 安装

Battery Historian作为google提供的一项工具,其github官方文档是很全面的。文档里介绍了两种安装方法,一种是使用Docker,一种是从源码进行编译。

使用Docker的麻烦之处在于Docker的安装使用,在windows 10 专业版的操作系统平台上,使用Docker Destop一直未能进行 docker build 工作。一直报错:“二进制流“0”不包含有效的 BinaryHeader。这可能是由于无效流,或由于在序列化和反序列化之间的对象版本更改。”也并没有找到合适的解决方案。

故此,本人只能使用从源码编译的第二种方法了。第二种方法虽然需要配置一些环境变量,但作为一个开发者,像java、python这样要求的环境变量一直都有,所以,也没有那么麻烦。

在“run Battery Historian”中的“# Compile Javascript files using the Closure compiler”时,可能会遇到如下报错:

Generating optimized JS runfiles...
failed to run command "java -jar C:\\go-work\\src\\github.com\\google\\battery-historian/third_party/closure-compiler/closure-compiler-v20170409.jar --closure_entry_point historian.upload --js js/*.js --js C:\\go-work\\src\\github.com\\google\\battery-historian/third_party/closure-library/closure/goog/base.js --js C:\\go-work\\src\\github.com\\google\\battery-historian/third_party/closure-library/closure/goog/**/*.js --only_closure_dependencies --generate_exports --js_output_file C:\\go-work\\src\\github.com\\google\\battery-historian/compiled/historian-optimized.js --output_manifest C:\\go-work\\src\\github.com\\google\\battery-historian/compiled/manifest.MF --compilation_level SIMPLE_OPTIMIZATIONS":
  exit status 1
  C:/go-work/src/github.com/google/battery-historian/third_party/closure-library/closure/goog/base.js:2136: WARNING - Parse error. unknown @suppress parameter: strictMissingProperties
 * @suppress {strictMissingProperties} superClass_ and base is not defined on
              ^

C:/go-work/src/github.com/google/battery-historian/third_party/closure-library/closure/goog/cssom/cssom.js:86: WARNING - Parse error. unknown @suppress parameter: strictMissingProperties
...

上述错误产生原因不明,但是在github仓库的Issue 中提供了一种切实可行的解决方案:

I find one work around way in former issues
go run setup.go (this fails)
cd third_party/closure-library/
git reset --hard v20170409
cd -
go run setup.go (this passes)

我也是用这种解决方案解决了我的问题。启动后默认是在http://localhost:9999界面。

Battery Historian使用

将安卓SDK中的adb工具加入操作系统环境变量。连接上手机,开启USB调试选项。

运行以下命令,便会在当前目录生成bugreport.zip文件:

$ adb bugreport bugreport.zip

在http://localhost:9999界面选择浏览上传后就会得到具体的分析结果。