性能优化之电量优化2-使用Battery Historian生成电量消耗报告
1 數(shù)據(jù)準(zhǔn)備
1.1 先斷開adb服務(wù),然后開啟adb服務(wù)
(a)adb kill-server這一步很重要,因?yàn)楫?dāng)我們開發(fā)時(shí)做電量記錄時(shí)會打開很多可能造成沖突的東西。為了保險(xiǎn)起見我們重啟adb。adb devices就會自動連接查找手機(jī)。
備注:mac可以直接使用adb命令;但是windows不行,需要進(jìn)入到adt下:adt-bundle-windows-x86_64-20140702\adt-bundle-windows-x86_64-20140702\sdk\platform-tools 操作adb命令。
(b)adb start-server重啟adb。
1.2 重置電池?cái)?shù)據(jù)收集數(shù)據(jù)
(c)adb shell dumpsys batterystats --enable full-wake-history(d)adb shell dumpsys batterystats --reset我們通過以上命令來打開電池?cái)?shù)據(jù)的獲取以及重置,清除干擾的數(shù)據(jù),執(zhí)行的效果如下:
1.3 獲取電量報(bào)告
把數(shù)據(jù)線直接拔掉(防止數(shù)據(jù)線造成充放電數(shù)據(jù)干擾),現(xiàn)在做一些測試,手動或者跑一些自動化的case都行。經(jīng)過一段時(shí)間后,我們重新連接手機(jī)確認(rèn)adb連上了,運(yùn)行下面這條命令來將bugreport的信息保存到txt文檔中:
(e)adb bugreport > bugreport.txt或者用下面的命令也可以,加上包名可以限制輸出的數(shù)據(jù)是我們要檢測的。:
(e.1)adb shell dumpsys batterystats > batterystats.txt(e.2)adb shell dumpsys batterystats > com.example.android.sunshine.app > batterystats.txt注意:
json: unsupported value: NaN
有人用了描述:the problem started when reset the battery stats and enabled full-wake-history。
解決:重啟手機(jī)再試就好了。
1.4 使用battery-historian工具圖形化報(bào)告
到此我們有兩種方式分析這個(gè)文件:(historian-V1之前的版本 和historian-V2最新的版本),詳細(xì)在第二、三章分析。
2 historian-V1之前的版本分析方式
2.1 將txt文檔轉(zhuǎn)化為html文件,命令如下:
(f)python historian.py -a bugreport.txt > battery.html2.2 環(huán)境配置
(1)python 未安裝需要先安裝python環(huán)境,并配置path,否則無法使用python命令。備注:mac可能不需要安裝。
(2)historian.py腳本是Python寫的,所以需要historian腳本,從github工具開源地址:上下載這個(gè)腳本。文件在github上面的scripts目錄下面,需要下載到命令行所在的目錄:
2.3 Google瀏覽器打開html文件
(1)注意:瀏覽器顯示滿屏的文字+英文,無法生成圖形報(bào)告,或者打開生成的HTML顯示錯(cuò)誤如下,WARNING: Visualizer disabled. If you see this message, download the HTML then open it。
解決:需要使用vpn翻墻訪問谷歌服務(wù)。
(2)上面兩條命令執(zhí)行成功后,會在目錄下發(fā)現(xiàn)兩個(gè)文件bugreport.txt和battery.html,這個(gè)時(shí)候我們用google瀏覽器打開html文件,可以看到如下信息:
2.4 Battery History報(bào)告各個(gè)參數(shù)的意義
重要的參數(shù):WiFi、wake_lock、conn、mobile_ratio(蜂窩信號)
(1)橫坐標(biāo)
上面的30,0代表的就是秒的意思,它是以一分鐘為周期,到第60秒的時(shí)候變?yōu)?。橫坐標(biāo)就是一個(gè)時(shí)間范圍,咱們的例子中統(tǒng)計(jì)的數(shù)據(jù)是以重置為起點(diǎn),獲取bugreport內(nèi)容時(shí)刻為終點(diǎn)。我們一共采集了多長時(shí)間的數(shù)據(jù),圖表下也有信息說明。(經(jīng)其他人的反饋,這個(gè)坐標(biāo)間隔是會隨著時(shí)間的長度發(fā)生改變,所以要以你的實(shí)際情況為準(zhǔn))
(2)縱坐標(biāo)
縱坐標(biāo)的數(shù)據(jù)就很麻煩了,數(shù)據(jù)量太多,一條一條來吧。
(3)battery_level
電量,可以看出電量的變化。比如上圖中的數(shù)據(jù)顯示剛開始電量是100%,然后在第11秒-12秒中間的某個(gè)時(shí)刻降到了99%。
(4)plugged
充電狀態(tài),這一欄顯示是否進(jìn)行了充電,以及充電的時(shí)間范圍。例如上圖反映了我們在第22s插入了數(shù)據(jù)線,然后一直持續(xù)了數(shù)據(jù)采集結(jié)束。
(5)screen
屏幕是否點(diǎn)亮,這一點(diǎn)可以考慮到睡眠狀態(tài)和點(diǎn)亮狀態(tài)下電量的使用信息。
(6)top
該欄顯示當(dāng)前時(shí)刻哪個(gè)app處于最上層,就是當(dāng)前手機(jī)運(yùn)行的app,用來判斷某個(gè)app對手機(jī)電量的影響,這樣也能判斷出該app的耗電量信息。該欄記錄了應(yīng)用在某一個(gè)時(shí)刻啟動,以及運(yùn)行的時(shí)間,這對我們比對不同應(yīng)用對性能的影響有很大的幫助。
(7)wake_lock*
wake_lock 該屬性是記錄wake_lock模塊的工作時(shí)間。是否有停止的時(shí)候等
(8)running
界面的狀態(tài),主要判斷是否處于idle的狀態(tài)。用來判斷無操作狀態(tài)下電量的消耗。
(9)wake_lock_in*
wake_lock有不同的組件,這個(gè)地方記錄在某一個(gè)時(shí)刻,有哪些部件開始工作,以及工作的時(shí)間。
(10)gps
gps是否開啟
(11)phone_in_call
是否進(jìn)行通話
(12)Sync
是否跟后臺同步.
可以把鼠標(biāo)停在某一項(xiàng)上面。可以看到何時(shí)sync同步 啟動的,持續(xù)時(shí)間Duration多久。電池容量不會顯示單一行為消耗的具體電量,這里只能顯示使用電池的頻率和時(shí)長,你可以看分時(shí)段的剩余電量來了解具體消耗了多少電量。
(13)Job
后臺的工作,比如服務(wù)service的運(yùn)行。從下面圖中可以看到qihoo的AppStore和魯大師都在運(yùn)行后臺服務(wù)。
(14)data_conn*
數(shù)據(jù)連接方式的改變,上面的edge是說明采用的gprs的方式連接網(wǎng)絡(luò)的。此數(shù)據(jù)可以看出手機(jī)是使用2g,3g,4g還是wifi進(jìn)行數(shù)據(jù)交換的。這一欄可以看出不同的連接方式對電量使用的影響。
(15)status
電池狀態(tài)信息,有充電,放電,未充電,已充滿,未知等不同狀態(tài)。
這一欄記錄了電池狀態(tài)的改變信息。
(16)phone_signal_strength
手機(jī)信號狀態(tài)的改變。
這一欄記錄手機(jī)信號的強(qiáng)弱變化圖,依次來判斷手機(jī)信號對電量的影響。
(17)health
電池健康狀態(tài)的信息,這個(gè)信息一定程度上反映了這塊電池使用了多長時(shí)間。
這一欄記錄電池狀態(tài)在何時(shí)發(fā)生改變,上面的圖中電池狀態(tài)一直處于good狀態(tài)。
(19)plug
充電方式,usb或者插座,以及顯示連接的時(shí)間。
這一欄顯示了不同的充電方式對電量使用的影響。
3 historian-V2最新的版本的方式
備注:本方法由于翻墻等原因還沒確定是否成功。
3.1 鏈接參考
(1)工具開源地址: https://github.com/google/battery-historian
(2)Install Docker安裝路徑:https://docs.docker.com/engine/installation/
(3)參考項(xiàng)目安裝 Docker
https://docs.docker.com/docker-for-windows/
http://wiki.jikexueyuan.com/project/docker/installation/mac.html
3.2 安裝Docker環(huán)境來安裝Battery History
(1)描述
根據(jù)gitbub上面介紹,Battery History工具的安裝有兩種方式:
A、通過安裝Docker環(huán)境來安裝。(這種方式很簡單,Docker真心好用,太彪悍了!)
B、安裝GO環(huán)境、Git環(huán)境、Python、Java環(huán)境(不推薦)
(2)Docker環(huán)境
Docker是一種容器,一般用于云計(jì)算和大數(shù)據(jù)平臺。提倡的一種思想就是:軟件即服務(wù)。這句話不是蓋的,一句話就可以將別人發(fā)布的docker服務(wù)環(huán)境一次全部copy過來(注意是整個(gè)軟件環(huán)境哦,相當(dāng)于復(fù)制了一臺一模一樣的主機(jī),連軟件都不要安裝了,全有了。彪悍吧!)
Docker只支持Windows10(mac貌似也支持)
(3)Docker安裝注意問題:翻墻
A、進(jìn)部署好的服務(wù)器docker,顯示錯(cuò)誤如下:
{“UploadResponse”:[{“sdkVersion”:23,”historianV2Cs…
https://github.com/google/battery-historian/issues/64
解決:You need a network connection.需要翻墻。 動腦的centos無法翻墻訪問谷歌服務(wù)導(dǎo)致。
B、進(jìn)部署好的動腦服務(wù)器docker,沒有顯示錯(cuò)誤,但是最上面提示了紅色的顏色塊,表示訪問出錯(cuò)。
解決:無法翻墻訪問谷歌服務(wù)導(dǎo)致。
(4)操作命令
Gitbub上面是這樣的命令及地址:
docker -- run -p <port>:9999 gcr.io/android-battery-historian:2.1 --port 9999這個(gè)里面的地址貌似不能用(可能是翻墻軟件屏蔽了的原因),然后找到了一個(gè)老外的鏡像,是2.0版本的。(鏡像地址:blystad/battery-historian或者bhaavan/battery-historian)
關(guān)鍵:
docker -- run -p 6666:9999 blystad/battery-historian --port 9999或者命令如下(上面這種是臨時(shí)開辟的程序服務(wù),下面是開啟了一個(gè)單獨(dú)系統(tǒng)服務(wù)更正規(guī)的服務(wù)。):
docker run -d –p 9999:9999 bhaavan/battery-historian3.3 導(dǎo)出手機(jī)的Bugreport日志
輸入指令 adb bugreport > bugreport.txt導(dǎo)出
3.4 上傳bugreport.txt文件至 http://localhost:9999
總結(jié)
以上是生活随笔為你收集整理的性能优化之电量优化2-使用Battery Historian生成电量消耗报告的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux恢复成裸设备,Linux下的裸
- 下一篇: PySerial:Python串口通信库