1. 程式人生 > 實用技巧 >Android電量優化-Battery Historian環境搭建及簡單使用

Android電量優化-Battery Historian環境搭建及簡單使用

個人部落格

http://www.milovetingting.cn

Android電量優化-Battery Historian環境搭建及簡單使用

前言

在Android5.0後,Batterystats已經內建在Android系統中,用於收集裝置上的電池資料。可以使用adb將收集的電池資料匯出,並生成可使用 Battery Historian 分析的報告。Battery Historian 會將報告從 Batterystats 轉換為可在瀏覽器中檢視的 HTML 直觀檢視。

在Android8.0後,也可通過Android Studio的Profiler-Energy工具檢視,這裡不再多介紹。

安裝Docker

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

通過原始碼編譯的方式,步驟較多,過程較複雜。這裡不多介紹。

最簡單的方法是通過Docker來安裝。

安裝Docker

安裝Docker,可以在官網上下載對應系統平臺的安裝包,可以參考這個連結:https://yeasy.gitbook.io/docker_practice/install

配置映象加速器

國內從 Docker Hub 拉取映象有時會遇到困難,此時可以配置映象加速器。可以參考這個連結:https://yeasy.gitbook.io/docker_practice/install/mirror

安裝Battery Historian

  1. 啟動Docker後,執行cmd,然後輸入docker search battery,搜尋battery historian的映象

  1. 上面列出了battery historian相關的映象,可以選擇一個映象,通過docker pull blystad/battery-historian-2命令,拉取映象

下載所需時間視網路情況而不同,如果下載緩慢,請參考前面的連結配置映象加速器。

  1. 執行 run --name=battery -d -p 9999:9999 blystad/battery-historian-2``

    • name引數也可以指定其它名稱,只要不重複就可以。命令的最後一個引數是上面拉取映象時用到的名稱。

    • 如果已經執行過上面的命令,一般會報錯,可以指定name和port為其它值即可

  2. 然後開啟Docker的Dashboard面板,這裡以Windows10為例,右擊電腦右下角的Docker圖示,在彈出的選單中選擇Dashboard

  3. 可以看到,已經建立好了我們需要的容器。點選start圖示

  4. 點選下圖紅框中的圖示,會在瀏覽器中開啟http://localhost:9999/

  5. 開啟後的介面是這樣的:

    如果開啟過程緩慢,那麼可以考慮是否載入網頁過程中出錯了。可以F12開啟開發者工具

    如果看到上圖紅框所示的情況,那麼一般是執行出錯了。點選檢視,可以看到是由於載入不到js檔案導致的。這種情況的話,只能科 學 上 網,否則後面上傳Bugreport檔案時不會出現Submit按鈕。

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

匯出電量資料

  • 重置電池資料收集

    adb shell dumpsys batterystats --reset

    裝置始終會在後臺收集 Batterystats 和其他除錯資訊。重置操作會清除舊的電池收集資料。如果不重置,輸出內容會非常大。

  • 如果需要統計所有的喚醒鎖的資訊,則需要設定

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

  • 統計完成後,需要關閉這個功能

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

  • 斷開裝置與計算機的連線,以便僅消耗裝置電池的電量。

  • 操作要測試的應用

  • 重新連線手機,匯出資料

    • 對於搭載 Android 7.0 及更高版本的裝置:

      adb bugreport > [path/]bugreport.zip

    • 對於搭載 Android 6.0 及更低版本的裝置:

      adb bugreport > [path/]bugreport.txt

  • 上傳報告

分析耗電

  • 上傳成功後,生成的分析報告頁面

    可以看到,圖中紅框中的黑線下降趨勢。滑鼠放在線上面,會顯示耗電的應用情況。

  • AndroidQ及以上匯出的資料報告,可能會無法解析

    遇到這種情況,可以換一個映象

    docker pull runcare/battery-historian

    映象拉取完成後

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

    注意:name不要和已有的重複,埠號也不要重複,可以先停止原執行的容器。

    然後就可以正常解析報告

  • 可以選定需要分析的應用來檢視具體的資訊

  • 檢視右側的wakelock、service等資訊

  • 檢視System Stats標籤下的相關資訊

後記

電量優化是一個比較系統性的工作,需要熟悉專案的具體業務,再結合Historian分析報告,分析具體的耗電點,結合程式碼進行優化,再驗證優化效果。

本文簡單記錄Battery Historian的環境搭建及電量報告的匯出、上傳。具體的分析還是需要結合實際業務來分析耗電的情況,在實踐中提高電量優化的能力。

記錄如上,以便後續檢視。

參考

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

https://www.jianshu.com/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