Android電量?jī)?yōu)化-Battery Historian環(huán)境搭建及簡(jiǎn)單使用

個(gè)人博客

http://www.milovetingting.cn

Android電量?jī)?yōu)化-Battery Historian環(huán)境搭建及簡(jiǎn)單使用

前言

在Android5.0后,Batterystats已經(jīng)內(nèi)置在Android系統(tǒng)中,用于收集設(shè)備上的電池?cái)?shù)據(jù)??梢允褂胊db將收集的電池?cái)?shù)據(jù)導(dǎo)出,并生成可使用 Battery Historian 分析的報(bào)告。Battery Historian 會(huì)將報(bào)告從 Batterystats 轉(zhuǎn)換為可在瀏覽器中查看的 HTML 直觀視圖。

在Android8.0后,也可通過Android Studio的Profiler-Energy工具查看,這里不再多介紹。

安裝Docker

Battery Historian可以通過Docker來安裝,也可以直接下載Battery Historian源碼編譯。

通過源碼編譯的方式,步驟較多,過程較復(fù)雜。這里不多介紹。

最簡(jiǎn)單的方法是通過Docker來安裝。

安裝Docker

安裝Docker,可以在官網(wǎng)上下載對(duì)應(yīng)系統(tǒng)平臺(tái)的安裝包,可以參考這個(gè)鏈接:https://yeasy.gitbook.io/docker_practice/install

配置鏡像加速器

國(guó)內(nèi)從 Docker Hub 拉取鏡像有時(shí)會(huì)遇到困難,此時(shí)可以配置鏡像加速器。可以參考這個(gè)鏈接:https://yeasy.gitbook.io/docker_practice/install/mirror

安裝Battery Historian

  1. 啟動(dòng)Docker后,運(yùn)行cmd,然后輸入docker search battery,搜索battery historian的鏡像
search battery
  1. 上面列出了battery historian相關(guān)的鏡像,可以選擇一個(gè)鏡像,通過docker pull blystad/battery-historian-2命令,拉取鏡像
pull battery

下載所需時(shí)間視網(wǎng)絡(luò)情況而不同,如果下載緩慢,請(qǐng)參考前面的鏈接配置鏡像加速器。

  1. 運(yùn)行 run --name=battery -d -p 9999:9999 blystad/battery-historian-2``

    • name參數(shù)也可以指定其它名稱,只要不重復(fù)就可以。命令的最后一個(gè)參數(shù)是上面拉取鏡像時(shí)用到的名稱。
    run
    • 如果已經(jīng)運(yùn)行過上面的命令,一般會(huì)報(bào)錯(cuò),可以指定name和port為其它值即可
    run
  2. 然后打開Docker的Dashboard面板,這里以Windows10為例,右擊電腦右下角的Docker圖標(biāo),在彈出的菜單中選擇Dashboard

    DockerBoard
  3. 可以看到,已經(jīng)創(chuàng)建好了我們需要的容器。點(diǎn)擊start圖標(biāo)

    start
  4. 點(diǎn)擊下圖紅框中的圖標(biāo),會(huì)在瀏覽器中打開http://localhost:9999/

    start
  5. 打開后的界面是這樣的:

    start

    如果打開過程緩慢,那么可以考慮是否加載網(wǎng)頁(yè)過程中出錯(cuò)了??梢訤12打開開發(fā)者工具


    start

    如果看到上圖紅框所示的情況,那么一般是執(zhí)行出錯(cuò)了。點(diǎn)擊查看,可以看到是由于加載不到j(luò)s文件導(dǎo)致的。這種情況的話,只能科學(xué)上網(wǎng),否則后面上傳Bugreport文件時(shí)不會(huì)出現(xiàn)Submit按鈕。

    或者不通過Docker的方式安裝Battery Historian,而是通過編譯源碼的方式,通過修改html文件中引用的js文件路徑為可以訪問的路徑。

導(dǎo)出電量數(shù)據(jù)

  • 重置電池?cái)?shù)據(jù)收集

    adb shell dumpsys batterystats --reset

    設(shè)備始終會(huì)在后臺(tái)收集 Batterystats 和其他調(diào)試信息。重置操作會(huì)清除舊的電池收集數(shù)據(jù)。如果不重置,輸出內(nèi)容會(huì)非常大。

  • 如果需要統(tǒng)計(jì)所有的喚醒鎖的信息,則需要設(shè)置

    adb shell dumpsys batterystats --enable full-wake-history

  • 統(tǒng)計(jì)完成后,需要關(guān)閉這個(gè)功能

    adb shell dumpsys batterystats --disable full-wake-history

  • 斷開設(shè)備與計(jì)算機(jī)的連接,以便僅消耗設(shè)備電池的電量。

  • 操作要測(cè)試的應(yīng)用

  • 重新連接手機(jī),導(dǎo)出數(shù)據(jù)

    • 對(duì)于搭載 Android 7.0 及更高版本的設(shè)備:

      adb bugreport > [path/]bugreport.zip

    • 對(duì)于搭載 Android 6.0 及更低版本的設(shè)備:

      adb bugreport > [path/]bugreport.txt

  • 上傳報(bào)告

    start

分析耗電

  • 上傳成功后,生成的分析報(bào)告頁(yè)面

    start

    可以看到,圖中紅框中的黑線下降趨勢(shì)。鼠標(biāo)放在線上面,會(huì)顯示耗電的應(yīng)用情況。

  • AndroidQ及以上導(dǎo)出的數(shù)據(jù)報(bào)告,可能會(huì)無法解析

    start

    遇到這種情況,可以換一個(gè)鏡像

    docker pull runcare/battery-historian

    start

    鏡像拉取完成后

    docker run --name=battery2 -d -p 9999:9999 runcare/battery-historian

    注意:name不要和已有的重復(fù),端口號(hào)也不要重復(fù),可以先停止原運(yùn)行的容器。

    start

    然后就可以正常解析報(bào)告

    start
  • 可以選定需要分析的應(yīng)用來查看具體的信息

    start
  • 查看右側(cè)的wakelock、service等信息

    start
    start
  • 查看System Stats標(biāo)簽下的相關(guān)信息

    start

后記

電量?jī)?yōu)化是一個(gè)比較系統(tǒng)性的工作,需要熟悉項(xiàng)目的具體業(yè)務(wù),再結(jié)合Historian分析報(bào)告,分析具體的耗電點(diǎn),結(jié)合代碼進(jìn)行優(yōu)化,再驗(yàn)證優(yōu)化效果。

本文簡(jiǎn)單記錄Battery Historian的環(huán)境搭建及電量報(bào)告的導(dǎo)出、上傳。具體的分析還是需要結(jié)合實(shí)際業(yè)務(wù)來分析耗電的情況,在實(shí)踐中提高電量?jī)?yōu)化的能力。

記錄如上,以便后續(xù)查看。

參考

https://developer.android.com/topic/performance/power/setup-battery-historian?hl=zh_cn

http://www.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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容