一、安裝基本工具
- 下載docker,用于安裝Battery Historian。
- Batterystats 工具
- Battery Historian 腳本
Batterystats 是包含在 Android 框架中的一種工具,用于收集設備上的電池數(shù)據(jù),通過adb命令將收集的電池數(shù)據(jù)轉存到開發(fā)機器,并聲稱可使用 Battery Historian 分析的報告。
安裝battery Historian,推薦使用Docker安裝。
1.安裝Docker:Docker 網站安裝 Docker 社區(qū)版后檢查Docker是否安裝成功:docker run hello-world是否能跑起來。

2.運行Battery Historian映像:執(zhí)行docker run -p port_number:9999 gcr.io/android-battery-historian/stable:3.0 --port 9999命令運行,端口號可在運行的docker中查看。
3.確認是否運行,在瀏覽器打開地址:
- Linux 和 Mac:Battery Historian 可在 http://localhost:port_number;
- Windows:Battery Historian 位于 http://ip:port_number;(ip地址:端口號)
4.收集數(shù)據(jù) 終端窗口使用adb命令:
- 關閉正在運行的adb服務器:
adb kill-server - 重啟adb并檢查是否有已連接的設備:
adb devices - 啟用完整喚醒鎖報告(只能測3~4小時,時間過長歷史記錄會溢出):
adb shell dumpsys batterystats --enable full-wake-history - 重置電池數(shù)據(jù)收集,清楚舊的電池收集數(shù)據(jù):
adb shell dumpsys batterystats --reset - 斷開設備與計算機的鏈接或USB充電消耗手機的電量
,運行需要監(jiān)測的APP,操作你想要獲取電池數(shù)據(jù)的行為。 - 重新連接手機,
adb devices確認連接上手機,運行轉存電池數(shù)據(jù)命令,adb shell dumpsys batterystats > [path/]batterystats.txt,等待幾分鐘會在指定的[path]目錄中生成batterystats.txt和zip壓縮包。
或:
Android6.0以上:adb bugreport >[path/]bugreport.zip,Android6.0及以下:adb bugreport >[path/]bugreport.txt - 在Battery Historian網頁中上傳
壓縮包或.txt文件,點擊Browse,上傳后submit提交。會生成一個可視化的表。
電量統(tǒng)計圖表
查看具體應用的數(shù)據(jù)
二、分析圖標數(shù)據(jù):
可視化圖表:
- 黑線:電池電量消耗的趨勢,觀察電池電量消耗的速率來重點查看這個階段做了什么。
- CPU runing:cpu使用時長,如果一直處在runing狀態(tài)則電量消耗會較高。
- Wakelocks:喚醒鎖
- JobScheduler:滿足一定的預定條件而觸發(fā)的任務,涉及的條件可以是網絡、電量、時間等。比如特定的電量或時間,選中片段查看這一階段哪個進程在使用任務調度器,發(fā)生時間、耗時及次數(shù)。
- Screen:紅色屏幕亮,白色表示息屏狀態(tài)。
-
WiFi:
具體應用的數(shù)據(jù):
Device's Power Estimates : 查看該設備上的應用耗電量排名,排名應排除系統(tǒng)級應用。
Device's Power Estimates : 查看該設備上的應用耗電量排名
找到需要監(jiān)測的應用,主要看 App Stats 欄
Device estimated power use(應用在該設備上的估計耗電量)
Foreground:前景
監(jiān)測是否過于頻繁地出發(fā)喚醒提醒
持續(xù)保留GPS鎖定
至少每30秒調度一次作業(yè)和調度一次同步
無線裝置的頻率高于預期
三、針對低功耗模式和應用待機模式進行優(yōu)化
低電耗模式
Android6.0(API23)開始引入省電功能。未鏈接電源且長時間未使用設備,會延遲應用的后臺CPU和網絡活動來降低耗電量。
喚醒屏幕或連接充電則會退出低電耗模式。
在低功耗模式下測試應用:
設備要求:Android6.0以上
- 設備連入計算機并安裝需要測試的應用并運行保持活動狀態(tài)
- 強制系統(tǒng)進入閑置模式:
adb shell dumpsys deviceidle force-idle - 退出閑置模式:
adb shell dumpsys deviceidle unforce - 重新激活設備:
adb shell dumpsys battery reset
電量優(yōu)化手段:
測試場景:前臺、后臺;音視頻、直播間播放、傳感器相關、后臺靜默測試。
網絡相關優(yōu)化:「時機:將延遲的網絡請求批量發(fā)送」、「次數(shù):減少請求次數(shù)」、「數(shù)據(jù)壓縮:減肥傳輸?shù)臅r間與流量」、「禁止沒必要的輪訓」
傳感器相關的優(yōu)化:根據(jù)場景選擇傳感器的模式,比如使用GPS時一般會避免選擇高精度模式、是否可復用上一次的定位結果。
使用JobScheduler,在Wi-Fi和充電時才去做某些操作。



