battery-historian使ってみた
BatteryHistorianとは2014年のGoogleI/Oで発表されたAndroidアプリにおける電力使用量を詳しく調査するための開発者ツールの一種です.
前置き等はこちらの記事が参考になるかとおもいます.
この記事ではpythonスクリプトという説明がなされていますが,あるとき見るとやり方が変わっていたので,それについてだらだらっと書きます.
battery-historianの公式リポジトリはこちら github.com
基本的にはこのリポジトリのREADMEを参照すれば良さそう.
またBatteryHistorian2.0からはpythonではなく,Golang製になっていました.
Golangそのものの設定はググるといいと思う.GOPATH
だけちゃんと設定していればいい.
ちなみに自分はGOPATH=~/local
にしてる.そうするとそれ以外のソースコードとかも統一して管理できる.
Protocol BufferのGoライブラリを入れる
$ go get -u github.com/golang/protobuf/proto $ go get -u github.com/golang/protobuf/protoc-gen-go
The compiler plugin, protoc-gen-go, will be installed in $GOBIN, which must be in your $PATH for the protocol compiler, protoc, to find it.
protoc-gen-go
というバイナリを使用するらしいので,PATH通しておけとのこと.$GOBIN
設定していればその場所に,してなければデフォルトで$GOPATH/bin
に入るらしい.
改めてREADME読んで$GOBIN
なるものを初めて知った.デフォルトは$GOPATH/bin
らしいから普通の人は気にしなくていいと思う.
Protocol BufferはGoogleが作ってるシリアライズフォーマット.研究室のコードで使われてた形跡とかあったけどあんまり知らない.
Battery-Historianダウンロード
# battery-historianダウンロード $ go get -u github.com/google/battery-historian # battery-historianのディレクトリに移動 $ cd $GOPATH/src/github.com/google/battery-historian # セットアップスクリプトを起動 $ bash setup.sh # Battery-historianサーバ起動 $ go run cmd/battery-historian/battery-historian.go [--port <default:9999>]
あとはgitから落としてきた上で,セットアップスクリプト動かすだけ.
見て分かる通り今回のバージョンからGolangによるサーバが立つかんじらしい.
ここまでできたらlocalhost:9999
にアクセス.
統計データ抽出
あとは開発者モードをオンにしたAndroid端末を用意する.これはググって.
その後adbを利用して
$ adb bugreport > bugreport.txt
として出てくるbugreport.txt
をbattery-historianにアップロードすると解析してもらえる.
bugreport出力は時間がそこそこかかるので注意.
あとデフォルトで取れるデータで記録されないものとかあるらしいので,イカのコマンドで有効にする*1
$ adb shell dumpsys batterystats --enable full-wake-history
bugreport
のリセットはイカのコマンドで.
$ adb shell dumpsys batterystats --reset
データの可視化
無事ファイルをセットできると,こんな画面が見える.
それぞれのパラメータの意味はぶっちゃけ全部分かってない...
参考文献
5分でわかるBatteryHistorianによるAndroidアプリの解析方法 - クックパッド開発者ブログ
google/battery-historian · GitHub
Battery Historian (unofficial) - Google Docs
*1:ぶっちゃけこの操作の意味分かってない.また調べないと...