Android電量優化-Battery Historian環境搭建及簡單使用
個人部落格
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
- 啟動Docker後,執行cmd,然後輸入
docker search battery
,搜尋battery historian的映象
- 上面列出了battery historian相關的映象,可以選擇一個映象,通過
docker pull blystad/battery-historian-2
命令,拉取映象
下載所需時間視網路情況而不同,如果下載緩慢,請參考前面的連結配置映象加速器。
-
執行 run --name=battery -d -p 9999:9999 blystad/battery-historian-2``
- name引數也可以指定其它名稱,只要不重複就可以。命令的最後一個引數是上面拉取映象時用到的名稱。
- 如果已經執行過上面的命令,一般會報錯,可以指定name和port為其它值即可
-
然後開啟Docker的Dashboard面板,這裡以Windows10為例,右擊電腦右下角的Docker圖示,在彈出的選單中選擇Dashboard
-
可以看到,已經建立好了我們需要的容器。點選start圖示
-
點選下圖紅框中的圖示,會在瀏覽器中開啟http://localhost:9999/
-
開啟後的介面是這樣的:
如果開啟過程緩慢,那麼可以考慮是否載入網頁過程中出錯了。可以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