battery-historian工具使用(安卓耗電分析)
battery-historian使用
數(shù)據(jù)準備
battery-historian工具需要使用bugreport中的Battery History
- 先斷開adb服務,然后開啟adb服務
adb kill-server 這一步很重要忧便,因為當我們開發(fā)時做電量記錄時會打開很多可能造成沖突的東西头岔。為了保險起見我們重啟adb垒棋。
adb devices就會自動連接查找手機。當然也可以adb start-server
- 重置電池數(shù)據(jù)收集數(shù)據(jù)蕉堰,我們在開始的時候需要通過以下命令來打開電池數(shù)據(jù)的獲取以及重置:
adb shell dumpsys batterystats --enable full-wake-history
adb shell dumpsys batterystats --reset
執(zhí)行的效果如下:
上面的操作相當于初始化操作台谢,如果不這么做會有一大堆的干擾的數(shù)據(jù)张遭,看起來會比較痛苦莽龟。然后把數(shù)據(jù)線直接拔掉(防止數(shù)據(jù)線造成充放電數(shù)據(jù)干擾)蠕嫁,現(xiàn)在做一些測試,手動或者跑一些自動化的case都行毯盈。經(jīng)過一段時間后剃毒,我們重新連接手機確認adb連上了,運行下面這條命令來將bugreport的信息保存到txt文檔中搂赋,
adb bugreport > bugreport.txt
或者用下面的命令也可以:
adb shell dumpsys batterystats > batterystats.txt
adb shell dumpsys batterystats > com.example.android.sunshine.app > batterystats.txt
加上包名可以限制輸出的數(shù)據(jù)是我們要檢測的赘阀。
但是這個txt的數(shù)據(jù)可讀性不強歉备。接下來我們就要用到這個battery-historian工具了友瘤。
到此我們有兩種方式分析這個文件:(historian-V1之前的版本 和historian-V2最新的版本)
historian-V1之前的版本分析方式:
將txt文檔轉(zhuǎn)化為html文件,命令如下腰素。
python historian.py -a bugreport.txt > battery.html
上面的historian.py腳本是Python寫的宋欺,所以需要python環(huán)境酌媒,然后從github上下載這個腳本。文件在github上面的scripts目錄下面迄靠,需要下載到命令行所在的目錄
上面兩條命令執(zhí)行成功后秒咨,會在目錄下發(fā)現(xiàn)兩個文件
bugreport.txt和battery.html,這個時候我們用google瀏覽器打開html文件掌挚,可以看到如下信息:
各個參數(shù)的意義
首先我們在bugreport.txt找到Battery History數(shù)據(jù)欄類似下面的信息:
DUMP OF SERVICE batterystats:
Battery History (2% used, 5980 used of 256KB, 45 strings using 2592):
0 (9) RESET:TIME: 2015-03-05-15-21-56
0 (2) 100 c0900422 status=discharging health=good plug=none temp=200 volt=4167 +running +wake_lock +sensor +screen data_conn=edge phone_signal_strength=great brightness=medium proc=u0a15:"android.process.acore"
0 (2) 100 c0900422 proc=u0a7:"com.android.cellbroadcastreceiver"
0 (2) 100 c0900422 proc=u0a53:"com.android.gallery3d"
你在html中信息都能從bugreport.txt中找到相應的信息雨席。
現(xiàn)在來分析各個指標代表的意義:
橫坐標
[圖片上傳失敗...(image-991cab-1637745139346)]
上面的10,20代表的就是秒的意思吠式,它是以一分鐘為周期陡厘,到第60秒的時候變?yōu)?。橫坐標就是一個時間范圍特占,咱們的例子中統(tǒng)計的數(shù)據(jù)是以重置為起點糙置,獲取bugreport內(nèi)容時刻為終點。我們一共采集了多長時間的數(shù)據(jù)是目,圖表下也有信息說明谤饭。(經(jīng)其他人的反饋,這個坐標間隔是會隨著時間的長度發(fā)生改變懊纳,所以要以你的實際情況為準揉抵。這個縮放級別可以調(diào)整的,如下圖:)
縱坐標
縱坐標的數(shù)據(jù)就很麻煩了嗤疯,數(shù)據(jù)量太多冤今,一條一條來吧。
- battery_level
電量茂缚,可以看出電量的變化戏罢。比如上圖中的數(shù)據(jù)顯示剛開始電量是100%屋谭,然后在第11秒-12秒中間的某個時刻降到了99%。
- plugged
充電狀態(tài)龟糕,這一欄顯示是否進行了充電戴而,以及充電的時間范圍。例如上圖反映了我們在第22s插入了數(shù)據(jù)線翩蘸,然后一直持續(xù)了數(shù)據(jù)采集結(jié)束所意。
- screen
屏幕是否點亮,這一點可以考慮到睡眠狀態(tài)和點亮狀態(tài)下電量的使用信息催首。
- top
該欄顯示當前時刻哪個app處于最上層扶踊,就是當前手機運行的app,用來判斷某個app對手機電量的影響郎任,這樣也能判斷出該app的耗電量信息秧耗。該欄記錄了應用在某一個時刻啟動,以及運行的時間舶治,這對我們比對不同應用對性能的影響有很大的幫助分井。
- wake_lock*
wake_lock 該屬性是記錄wake_lock模塊的工作時間。是否有停止的時候等
- running
界面的狀態(tài)霉猛,主要判斷是否處于idle的狀態(tài)尺锚。用來判斷無操作狀態(tài)下電量的消耗。
- wake_lock_in
wake_lock有不同的組件惜浅,這個地方記錄在某一個時刻瘫辩,有哪些部件開始工作,以及工作的時間坛悉。
- gps
gps是否開啟
- phone_in_call
是否進行通話
- Sync
是否跟后臺同步.
可以把鼠標停在某一項上面伐厌。可以看到何時sync同步 啟動的裸影,持續(xù)時間Duration多久挣轨。
電池容量不會顯示單一行為消耗的具體電量,這里只能顯示使用電池的頻率和時長轩猩,你可以看分時段的剩余電量來了解具體消耗了多少電量卷扮。
- Job
后臺的工作,比如服務service的運行界轩。從下面圖中可以看到qihoo的AppStore和魯大師都在運行后臺服務画饥。
- data_conn
數(shù)據(jù)連接方式的改變,上面的edge是說明采用的gprs的方式連接網(wǎng)絡的浊猾。此數(shù)據(jù)可以看出手機是使用2g,3g热鞍,4g還是wifi進行數(shù)據(jù)交換的葫慎。這一欄可以看出不同的連接方式對電量使用的影響衔彻。
status
電池狀態(tài)信息,有充電偷办,放電艰额,未充電,已充滿椒涯,未知等不同狀態(tài)柄沮。
這一欄記錄了電池狀態(tài)的改變信息。
- phone_signal_strength
手機信號狀態(tài)的改變废岂。
這一欄記錄手機信號的強弱變化圖祖搓,依次來判斷手機信號對電量的影響。
- health
電池健康狀態(tài)的信息湖苞,這個信息一定程度上反映了這塊電池使用了多長時間拯欧。
這一欄記錄電池狀態(tài)在何時發(fā)生改變,上面的圖中電池狀態(tài)一直處于good狀態(tài)财骨。
- plug
充電方式镐作,usb或者插座,以及顯示連接的時間隆箩。
這一欄顯示了不同的充電方式對電量使用的影響该贾。
historian-V2最新的版本的方式:
將生成bugreport.txt文件在 http://localhost:9999 中上傳文件生成報告(前提在本地或者某服務器上搭好了battery-historian項目環(huán)境)
其實在這里也可以看到兩種版本分析模式:
如果您覺得閱讀本文對您有幫助,請點一下“推薦”按鈕捌臊,您的“推薦”將是我最大的寫作動力靶庙!