個人博客
Android電量優(yōu)化-Battery Historian環(huán)境搭建及簡單使用
前言
在Android5.0后,Batterystats已經(jīng)內(nèi)置在Android系統(tǒng)中,用于收集設備上的電池數(shù)據(jù)??梢允褂胊db將收集的電池數(shù)據(jù)導出,并生成可使用 Battery Historian 分析的報告。Battery Historian 會將報告從 Batterystats 轉(zhuǎn)換為可在瀏覽器中查看的 HTML 直觀視圖。
在Android8.0后,也可通過Android Studio的Profiler-Energy工具查看,這里不再多介紹。
安裝Docker
Battery Historian可以通過Docker來安裝,也可以直接下載Battery Historian源碼編譯。
通過源碼編譯的方式,步驟較多,過程較復雜。這里不多介紹。
最簡單的方法是通過Docker來安裝。
安裝Docker
安裝Docker,可以在官網(wǎng)上下載對應系統(tǒng)平臺的安裝包,可以參考這個鏈接:https://yeasy.gitbook.io/docker_practice/install
配置鏡像加速器
國內(nèi)從 Docker Hub 拉取鏡像有時會遇到困難,此時可以配置鏡像加速器??梢詤⒖歼@個鏈接:https://yeasy.gitbook.io/docker_practice/install/mirror
安裝Battery Historian
- 啟動Docker后,運行cmd,然后輸入
docker search battery,搜索battery historian的鏡像

- 上面列出了battery historian相關(guān)的鏡像,可以選擇一個鏡像,通過
docker pull blystad/battery-historian-2命令,拉取鏡像

下載所需時間視網(wǎng)絡情況而不同,如果下載緩慢,請參考前面的鏈接配置鏡像加速器。
-
運行 run --name=battery -d -p 9999:9999 blystad/battery-historian-2``
- name參數(shù)也可以指定其它名稱,只要不重復就可以。命令的最后一個參數(shù)是上面拉取鏡像時用到的名稱。
run- 如果已經(jīng)運行過上面的命令,一般會報錯,可以指定name和port為其它值即可
run -
然后打開Docker的Dashboard面板,這里以Windows10為例,右擊電腦右下角的Docker圖標,在彈出的菜單中選擇Dashboard
DockerBoard -
可以看到,已經(jīng)創(chuàng)建好了我們需要的容器。點擊start圖標
start -
點擊下圖紅框中的圖標,會在瀏覽器中打開http://localhost:9999/
start -
打開后的界面是這樣的:
start如果打開過程緩慢,那么可以考慮是否加載網(wǎng)頁過程中出錯了。可以F12打開開發(fā)者工具
start如果看到上圖紅框所示的情況,那么一般是執(zhí)行出錯了。點擊查看,可以看到是由于加載不到js文件導致的。這種情況的話,只能科學上網(wǎng),否則后面上傳Bugreport文件時不會出現(xiàn)
Submit按鈕。或者不通過Docker的方式安裝Battery Historian,而是通過編譯源碼的方式,通過修改html文件中引用的js文件路徑為可以訪問的路徑。
導出電量數(shù)據(jù)
-
重置電池數(shù)據(jù)收集
adb shell dumpsys batterystats --reset
設備始終會在后臺收集 Batterystats 和其他調(diào)試信息。重置操作會清除舊的電池收集數(shù)據(jù)。如果不重置,輸出內(nèi)容會非常大。
-
如果需要統(tǒng)計所有的喚醒鎖的信息,則需要設置
adb shell dumpsys batterystats --enable full-wake-history
-
統(tǒng)計完成后,需要關(guān)閉這個功能
adb shell dumpsys batterystats --disable full-wake-history
斷開設備與計算機的連接,以便僅消耗設備電池的電量。
操作要測試的應用
-
重新連接手機,導出數(shù)據(jù)
-
對于搭載 Android 7.0 及更高版本的設備:
adb bugreport > [path/]bugreport.zip
-
對于搭載 Android 6.0 及更低版本的設備:
adb bugreport > [path/]bugreport.txt
-
-
上傳報告
start
分析耗電
-
上傳成功后,生成的分析報告頁面
start可以看到,圖中紅框中的黑線下降趨勢。鼠標放在線上面,會顯示耗電的應用情況。
-
AndroidQ及以上導出的數(shù)據(jù)報告,可能會無法解析
start遇到這種情況,可以換一個鏡像docker pull runcare/battery-historian
start鏡像拉取完成后
docker run --name=battery2 -d -p 9999:9999 runcare/battery-historian
注意:name不要和已有的重復,端口號也不要重復,可以先停止原運行的容器。
start然后就可以正常解析報告
start -
可以選定需要分析的應用來查看具體的信息
start -
查看右側(cè)的wakelock、service等信息
startstart -
查看System Stats標簽下的相關(guān)信息
start
后記
電量優(yōu)化是一個比較系統(tǒng)性的工作,需要熟悉項目的具體業(yè)務,再結(jié)合Historian分析報告,分析具體的耗電點,結(jié)合代碼進行優(yōu)化,再驗證優(yōu)化效果。
本文簡單記錄Battery Historian的環(huán)境搭建及電量報告的導出、上傳。具體的分析還是需要結(jié)合實際業(yè)務來分析耗電的情況,在實踐中提高電量優(yōu)化的能力。
記錄如上,以便后續(xù)查看。
參考
https://developer.android.com/topic/performance/power/setup-battery-historian?hl=zh_cn
http://m.itdecent.cn/p/378cf678bdeb
https://yeasy.gitbook.io/docker_practice/
https://developer.android.com/topic/performance/power/battery-historian?hl=zh_cn
https://developer.android.com/studio/profile/energy-profiler?hl=zh-cn
















