android電量?jī)?yōu)化之Battery Historian工具使用

前幾天寫了關(guān)于androidAPP性能優(yōu)化總結(jié)的文章疾渣,還沒有看的話可以看一下扰法,這文章提到了電量?jī)?yōu)化遗座,android耗電分析所用到的工具battery-historian,這里做一個(gè)總結(jié).

在 Android5.0 以前聂儒,在應(yīng)用中測(cè)試電量消耗比較麻煩灼擂,也不準(zhǔn)確嫉入,5.0 之后專門引入了一個(gè)獲取設(shè)備上電量消耗信息的 API:Battery Historian焰盗。Battery Historian 是一款由 Google 提供的 Android 系統(tǒng)電量分析工具璧尸,是一款圖形化數(shù)據(jù)分析工具,直觀地展示出手機(jī)的電量消耗過程熬拒,通過輸入電量分析文件爷光,顯示消耗情況,最后提供一些可供參考電量?jī)?yōu)化的方法澎粟。

數(shù)據(jù)準(zhǔn)備

battery-historian工具需要使用bugreport中的Battery History

  • 1.先斷開adb服務(wù)蛀序,然后開啟adb服務(wù)
    adb kill-server 這一步很重要,因?yàn)楫?dāng)我們開發(fā)時(shí)做電量記錄時(shí)會(huì)打開很多可能造成沖突的東西活烙。為了保險(xiǎn)起見我們重啟adb徐裸。
    adb devices就會(huì)自動(dòng)連接查找手機(jī)。當(dāng)然也可以adb start-server

  • 2.重置電池?cái)?shù)據(jù)收集數(shù)據(jù)瓣颅,我們?cè)陂_始的時(shí)候需要通過以下命令來打開電池?cái)?shù)據(jù)的獲取以及重置:

    adbshelldumpsysbatterystats--enable full-wake-history
    
    adbshelldumpsysbatterystats--reset
    

執(zhí)行的效果如下:

image.png

上面的操作相當(dāng)于初始化操作倦逐,如果不這么做會(huì)有一大堆的干擾的數(shù)據(jù),看起來會(huì)比較痛苦宫补。然后把數(shù)據(jù)線直接拔掉(防止數(shù)據(jù)線造成充放電數(shù)據(jù)干擾)檬姥,現(xiàn)在做一些[測(cè)試],手動(dòng)或者跑一些自動(dòng)化的case都行粉怕。經(jīng)過一段時(shí)間后健民,我們重新連接手機(jī)確認(rèn)adb連上了,運(yùn)行下面這條命令來將bugreport的信息保存到txt文檔中贫贝,

adb bugreport> bugreport.txt

或者用下面的命令也可以:

adb shell dumpsysbatterystats> batterystats.txt
adb shell dumpsysbatterystats>com.example.android.sunshine.app> batterystats.txt

加上包名可以限制輸出的數(shù)據(jù)是我們要檢測(cè)的秉犹。
但是這個(gè)txt的數(shù)據(jù)可讀性不強(qiáng)。接下來我們就要用到這個(gè)battery-historian工具了稚晚。

到此我們有兩種方式分析這個(gè)文件:(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上下載這個(gè)腳本。文件在github上面的scripts目錄下面也搓,需要下載到命令行所在的目錄

image.png

上面兩條命令執(zhí)行成功后赏廓,會(huì)在目錄下發(fā)現(xiàn)兩個(gè)文件
bugreport.txt和battery.html,這個(gè)時(shí)候我們用google瀏覽器打開html文件傍妒,可以看到如下信息:


image.png
各個(gè)參數(shù)的意義

首先我們?cè)赽ugreport.txt找到Battery History數(shù)據(jù)欄類似下面的信息:

  -------------------------------------------------------------------------------

  DUMPOFSERVICEbatterystats:

  BatteryHistory (2% used, 5980 used of256KB, 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中找到相應(yīng)的信息幔摸。

現(xiàn)在來分析各個(gè)指標(biāo)代表的意義:

  • 橫坐標(biāo)
    image.png

上面的10,20代表的就是秒的意思颤练,它是以一分鐘為周期既忆,到第60秒的時(shí)候變?yōu)?。橫坐標(biāo)就是一個(gè)時(shí)間范圍,咱們的例子中統(tǒng)計(jì)的數(shù)據(jù)是以重置為起點(diǎn)尿贫,獲取bugreport內(nèi)容時(shí)刻為終點(diǎn)电媳。我們一共采集了多長(zhǎng)時(shí)間的數(shù)據(jù),圖表下也有信息說明庆亡。(經(jīng)其他人的反饋匾乓,這個(gè)坐標(biāo)間隔是會(huì)隨著時(shí)間的長(zhǎng)度發(fā)生改變,所以要以你的實(shí)際情況為準(zhǔn)又谋。這個(gè)縮放級(jí)別可以調(diào)整的拼缝,如下圖:)

image.png
  • battery_level
    電量,可以看出電量的變化彰亥。比如上圖中的數(shù)據(jù)顯示剛開始電量是100%咧七,然后在第11秒-12秒中間的某個(gè)時(shí)刻降到了99%。
image.png
  • plugged
    充電狀態(tài)任斋,這一欄顯示是否進(jìn)行了充電继阻,以及充電的時(shí)間范圍。例如上圖反映了我們?cè)诘?2s插入了數(shù)據(jù)線废酷,然后一直持續(xù)了數(shù)據(jù)采集結(jié)束瘟檩。

  • screen
    屏幕是否點(diǎn)亮,這一點(diǎn)可以考慮到睡眠狀態(tài)和點(diǎn)亮狀態(tài)下電量的使用信息澈蟆。

  • top
    該欄顯示當(dāng)前時(shí)刻哪個(gè)app處于最上層墨辛,就是當(dāng)前手機(jī)運(yùn)行的app,用來判斷某個(gè)app對(duì)手機(jī)電量的影響趴俘,這樣也能判斷出該app的耗電量信息睹簇。該欄記錄了應(yīng)用在某一個(gè)時(shí)刻啟動(dòng),以及運(yùn)行的時(shí)間寥闪,這對(duì)我們比對(duì)不同應(yīng)用對(duì)性能的影響有很大的幫助太惠。

  • wake_lock
    wake_lock 該屬性是記錄wake_lock模塊的工作時(shí)間。是否有停止的時(shí)候等

  • running
    界面的狀態(tài)疲憋,主要判斷是否處于idle的狀態(tài)垛叨。用來判斷無操作狀態(tài)下電量的消耗。

  • wake_lock_in
    wake_lock有不同的組件柜某,這個(gè)地方記錄在某一個(gè)時(shí)刻,有哪些部件開始工作敛纲,以及工作的時(shí)間喂击。

  • gps
    gps是否開啟

  • phone_in_call
    是否進(jìn)行通話

  • Sync
    是否跟后臺(tái)同步.
    可以把鼠標(biāo)停在某一項(xiàng)上面∮傧瑁可以看到何時(shí)sync同步啟動(dòng)的翰绊,持續(xù)時(shí)間Duration多久。電池容量不會(huì)顯示單一行為消耗的具體電量,這里只能顯示使用電池的頻率和時(shí)長(zhǎng)监嗜,你可以看分時(shí)段的剩余電量來了解具體消耗了多少電量谐檀。

    image.png

  • Job
    后臺(tái)的工作,比如服務(wù)service的運(yùn)行裁奇。從下面圖中可以看到qihoo的AppStore和魯大師都在運(yùn)行后臺(tái)服務(wù)桐猬。

    image.png

  • data_conn
    數(shù)據(jù)連接方式的改變,上面的edge是說明采用的gprs的方式連接網(wǎng)絡(luò)的刽肠。此數(shù)據(jù)可以看出手機(jī)是使用2g溃肪,3g,4g還是wifi進(jìn)行數(shù)據(jù)交換的音五。這一欄可以看出不同的連接方式對(duì)電量使用的影響惫撰。

  • status
    電池狀態(tài)信息,有充電躺涝,放電厨钻,未充電,已充滿坚嗜,未知等不同狀態(tài)夯膀。
    這一欄記錄了電池狀態(tài)的改變信息。

  • phone_signal_strength
    手機(jī)信號(hào)狀態(tài)的改變惶傻。
    這一欄記錄手機(jī)信號(hào)的強(qiáng)弱變化圖棍郎,依次來判斷手機(jī)信號(hào)對(duì)電量的影響。

  • health
    電池健康狀態(tài)的信息银室,這個(gè)信息一定程度上反映了這塊電池使用了多長(zhǎng)時(shí)間涂佃。
    這一欄記錄電池狀態(tài)在何時(shí)發(fā)生改變,上面的圖中電池狀態(tài)一直處于good狀態(tài)蜈敢。

  • plug
    充電方式辜荠,usb或者插座,以及顯示連接的時(shí)間抓狭。
    這一欄顯示了不同的充電方式對(duì)電量使用的影響伯病。

historian-V2最新的版本的方式:

將生成bugreport.txt文件在 [http://localhost:9999](javascript:goto();) 中上傳文件生成報(bào)告(前提在本地或者某服務(wù)器上搭好了battery-historian項(xiàng)目環(huán)境

image.png

其實(shí)在這里也可以看到兩種版本分析模式:

image.png

好了,battery-historian分析工具就寫到這里否过,大家有興趣的話可以去試試午笛!

本人做android開發(fā)多年,以后會(huì)陸續(xù)更新關(guān)于android高級(jí)UI,NDK開發(fā),性能優(yōu)化等文章,更多請(qǐng)關(guān)注我的微信公眾號(hào):謝謝!
android的那點(diǎn)事.jpg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市苗桂,隨后出現(xiàn)的幾起案子药磺,更是在濱河造成了極大的恐慌,老刑警劉巖煤伟,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件癌佩,死亡現(xiàn)場(chǎng)離奇詭異木缝,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)围辙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門我碟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人姚建,你說我怎么就攤上這事矫俺。” “怎么了桥胞?”我有些...
    開封第一講書人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵恳守,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我贩虾,道長(zhǎng)催烘,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任缎罢,我火速辦了婚禮伊群,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘策精。我一直安慰自己舰始,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開白布咽袜。 她就那樣靜靜地躺著丸卷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪询刹。 梳的紋絲不亂的頭發(fā)上谜嫉,一...
    開封第一講書人閱讀 52,475評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音凹联,去河邊找鬼沐兰。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蔽挠,可吹牛的內(nèi)容都是我干的住闯。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼澳淑,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼比原!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起杠巡,我...
    開封第一講書人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤春寿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后忽孽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年兄一,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了厘线。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡出革,死狀恐怖造壮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情骂束,我是刑警寧澤耳璧,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站展箱,受9級(jí)特大地震影響旨枯,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜混驰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一攀隔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧栖榨,春花似錦昆汹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至愚争,卻和暖如春映皆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背准脂。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工劫扒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人狸膏。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓沟饥,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親湾戳。 傳聞我的和親對(duì)象是個(gè)殘疾皇子贤旷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容