概念
Battery Historian 是一個(gè)這樣的的工具:可以在 Android 5.0 Lollipop(API 級(jí)別21)及更高版本的 Android 設(shè)備上檢測與電池相關(guān)的信息和事件贮尉,而在此期間赌渣,該設(shè)備沒有插上電源览芳。它允許應(yīng)用程序開發(fā)人員在時(shí)間軸上可視化系統(tǒng)和應(yīng)用級(jí)別的事件悟泵,并使用平移和縮放功能敦第,在設(shè)備最后一次完全充電之后右钾,可以輕松地查看各種聚合統(tǒng)計(jì)信息,可以選擇一個(gè)應(yīng)用程序房待,檢查所選擇的應(yīng)用程序?qū)﹄姵刂笜?biāo)的影響流椒。此外温数,它還允許對(duì)兩個(gè)錯(cuò)誤報(bào)告進(jìn)行 A/B 比較安岂,突出顯示了關(guān)鍵電池相關(guān)指標(biāo)的差異。
https://github.com/google/battery-historian#building-from-source-code
配置
- 使用Docker
- 自己配置環(huán)境
使用Docker
docker的安裝與使用
在docker上運(yùn)行Battery Historian
- 在終端搜索Battery Historian相關(guān)的鏡像
docker search battery
docer_search.png - 拉取battery鏡像到本地
docker pull blystad/battery-historian-2
docker_battery_pull.png - 運(yùn)行battery-historian
docker run --name=battery -d -p 9999:9999 blystad/battery-historian-2
docker_run_battery.png - docker簡單使用命令
查看容器
docker container ls -a
啟動(dòng)容器docker container start/restart[重啟]
停止容器docker container stop
刪除容器docker container rm
或者根據(jù)官網(wǎng)的步驟來
自己配置環(huán)境
安裝Go
- Make sure you have at least Golang version 1.8.1
- 配置GOROOT GOROOT的作用是告訴Go 命令和其他相關(guān)工具帆吻,在哪里去找到安裝在你系統(tǒng)上的Go包,所以這里配置的是GO的安裝目錄
- 配置GOPATH GOPATH可以簡單理解為是工程的目錄域那,所以創(chuàng)建一個(gè)GO的工程路徑
- 配置環(huán)境變量 把Go的bin目錄放到path環(huán)境變量中
-
檢查Go是否安裝成功,打開命令行輸入Go version
go_version.png
安裝Python
- 注意僅支持python2.7
-
輸入命令行 python –V(注意是大寫V)檢查是否安裝成功
python_version.png
python安裝請(qǐng)看http://www.reibang.com/p/e73768e66b8d
安裝Git
-
安裝完成檢查:命令行輸入git version
git_version.png
安裝Java環(huán)境
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Battery Historian
- 下載源碼
go get -d -u github.com/google/battery-historian/...
- 運(yùn)行Battery Historian
cd $GOPATH/src/github.com/google/battery-historian
我這里GOPATH是F:\zero1\goworkspace
go run setup.go
battery_setup.png
注意 這里一般會(huì)讓你下載三個(gè)第三方庫猜煮,并且一般都是下載不了
首先先運(yùn)行go run setup.go
等它報(bào)錯(cuò)停止
-
這樣會(huì)在F:\zero1\goworkspace\src\github.com\google\battery-historian\third_party下生成third_party這個(gè)目錄次员,如果沒有則自己創(chuàng)建這個(gè)目錄
battery_third_part.png - 然后自己手動(dòng)去下載這三個(gè)庫,然后copy到third_party的相對(duì)應(yīng)目錄下王带,如果沒有則自己創(chuàng)建者三個(gè)目錄
https://github.com/google/closure-compiler
https://github.com/google/closure-library/tree/master
https://github.com/markrcote/flot-axislabels
然后再次運(yùn)行go run setup.go
- 如果closure-library報(bào)錯(cuò)淑蔚,則需要把
closure-library
回退到v20170409
版本
closure_lib_error.png - 回到closure-library目錄下
git reset --hard v20170409
closure_lib_reset.png - 然后重新copy到\third_party\closure-library下面 再次運(yùn)行
go run setup.go
驗(yàn)證,沒報(bào)錯(cuò)就OK了
運(yùn)行Battery Historian
注意只能在\src\github.com\google\battery-historian\運(yùn)行命令
go run cmd/battery-historian/battery-historian.go
分析功耗報(bào)告
采集battery報(bào)告
- 采集報(bào)告前將battery統(tǒng)計(jì)狀態(tài)重置愕撰,重置命令結(jié)束后斷開usb刹衫,測試結(jié)束后用獲取報(bào)告命令導(dǎo)出統(tǒng)計(jì)文件包
adb shell dumpsys batterystats --reset
默認(rèn)情況下,統(tǒng)計(jì)信息是在運(yùn)行基礎(chǔ)上維護(hù)的搞挣,Android也不記錄特定于應(yīng)用程序的用戶空間wakelock轉(zhuǎn)換的時(shí)間戳带迟。如果您希望Historian在時(shí)間線上顯示關(guān)于每個(gè)單獨(dú)喚醒鎖的詳細(xì)信息,則應(yīng)在開始實(shí)驗(yàn)之前使用以下命令啟用完整喚醒鎖報(bào)告:
adb shell dumpsys batterystats --enable full-wake-history
注意統(tǒng)計(jì)完要關(guān)閉
adb shell dumpsys batterystats --disable full-wake-history
- 導(dǎo)出報(bào)告
adb bugreport bugreport.zip(6.0以及以下的囱桨,使用adb bugreport > bugreport.txt導(dǎo)出)
- 上傳bugreport.zip文件至 http://localhost:9999
update_bugreport.png
-然后sumbit 查看電量分析報(bào)告