效能最佳化之電量最佳化2-使用Battery Historian產生電量消耗報告

來源:互聯網
上載者:User

標籤:安裝   使用   通話   keyword   title   rip   proc   reset   資訊   

1 資料準備1.1 先斷開adb服務,然後開啟adb服務
(a)adb kill-server 

這一步很重要,因為當我們開發時做電量記錄時會開啟很多可能造成衝突的東西。為了保險起見我們重啟adb。adb devices就會自動連接尋找手機。

備忘:mac可以直接使用adb命令;但是windows不行,需要進入到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)adb shell dumpsys batterystats --enable full-wake-history(d)adb shell dumpsys batterystats --reset

我們通過以上命令來開啟電池資料的擷取以及重設,清除幹擾的資料,執行的效果如下:

1.3 擷取電量報告

把資料線直接拔掉(防止資料線造成充放電資料幹擾),現在做一些測試,手動或者跑一些自動化的case都行。經過一段時間後,我們重新串連手機確認adb連上了,運行下面這條命令來將bugreport的資訊儲存到txt文檔中:

(e)adb bugreport > bugreport.txt

或者用下面的命令也可以,加上包名可以限制輸出的資料是我們要檢測的。:

(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。
解決:重啟手機再試就好了。

1.4 使用battery-historian工具圖形化報告

到此我們有兩種方式分析這個檔案:(historian-V1之前的版本 和historian-V2最新的版本),詳細在第二、三章分析。

2 historian-V1之前的版本分析方式2.1 將txt文檔轉化為html檔案,命令如下:
(f)python historian.py -a bugreport.txt > battery.html
2.2 環境配置

(1)python 未安裝需要先安裝python環境,並配置path,否則無法使用python命令。備忘:mac可能不需要安裝。

(2)historian.py指令碼是Python寫的,所以需要historian指令碼,從github工具開源地址:上下載這個指令碼。檔案在github上面的scripts目錄下面,需要下載到命令列所在的目錄:

2.3 Google瀏覽器開啟html檔案

(1)注意:瀏覽器顯示滿屏的文字+英文,無法產生圖形報告,或者開啟產生的HTML顯示錯誤如下,WARNING: Visualizer disabled. If you see this message, download the HTML then open it。

解決:需要使用vpn翻牆訪問Google服務。

(2)上面兩條命令執行成功後,會在目錄下發現兩個檔案bugreport.txt和battery.html,這個時候我們用google瀏覽器開啟html檔案,可以看到如下資訊:





2.4 Battery History報告各個參數的意義

重要的參數:WiFi、wake_lock、conn、mobile_ratio(蜂窩訊號)

(1)橫座標

上面的30,0代表的就是秒的意思,它是以一分鐘為周期,到第60秒的時候變為0。橫座標就是一個時間範圍,咱們的例子中統計的資料是以重設為起點,擷取bugreport內容時刻為終點。我們一共採集了多長時間的資料,圖表下也有資訊說明。(經其他人的反饋,這個座標間隔是會隨著時間的長度發生改變,所以要以你的實際情況為準)

(2)縱座標
縱座標的資料就很麻煩了,資料量太多,一條一條來吧。

(3)battery_level
電量,可以看出電量的變化。比如中的資料顯示剛開始電量是100%,然後在第11秒-12秒中間的某個時刻降到了99%。

(4)plugged
充電狀態,這一欄顯示是否進行了充電,以及充電的時間範圍。例如反映了我們在第22s插入了資料線,然後一直持續了資料擷取結束。

(5)screen
螢幕是否點亮,這一點可以考慮到睡眠狀態和點亮狀態下電量的使用資訊。

(6)top
該欄顯示當前時刻哪個app處於最上層,就是當前手機啟動並執行app,用來判斷某個app對手機電量的影響,這樣也能判斷出該app的耗電量資訊。該欄記錄了應用在某一個時刻啟動,以及啟動並執行時間,這對我們比對不同應用對效能的影響有很大的協助。

(7)wake_lock*
wake_lock 該屬性是記錄wake_lock模組的工作時間。是否有停止的時候等

(8)running
介面的狀態,主要判斷是否處於idle的狀態。用來判斷無操作狀態下電量的消耗。

(9)wake_lock_in*
wake_lock有不同的組件,這個地方記錄在某一個時刻,有哪些組件開始工作,以及工作的時間。

(10)gps
gps是否開啟

(11)phone_in_call
是否進行通話

(12)Sync
是否跟背景同步處理.
可以把滑鼠停在某一項上面。可以看到何時sync同步 啟動的,期間Duration多久。電池容量不會顯示單一行為消耗的具體電量,這裡只能顯示使用電池的頻率和時間長度,你可以看分時段的剩餘電量來瞭解具體消耗了多少電量。

(13)Job
背景工作,比如服務service的運行。從下面圖中可以看到qihoo的AppStore和魯大師都在運行後台服務。

(14)data_conn*
資料連線方式的改變,上面的edge是說明採用的gprs的方式串連網路的。此資料可以看出手機是使用2g,3g,4g還是wifi進行資料交換的。這一欄可以看出不同的串連方式對電量使用的影響。

(15)status
電池狀態資訊,有充電,放電,未充電,已充滿,未知等不同狀態。
這一欄記錄了電池狀態的改變資訊。

(16)phone_signal_strength
手機訊號狀態的改變。
這一欄記錄手機訊號的強弱變化圖,依次來判斷手機訊號對電量的影響。

(17)health
電池健康狀態的資訊,這個資訊一定程度上反映了這塊電池使用了多長時間。
這一欄記錄電池狀態在何時發生改變,上面的圖中電池狀態一直處於good狀態。

(19)plug
充電方式,usb或者插座,以及顯示串連的時間。
這一欄顯示了不同的充電方式對電量使用的影響。

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

備忘:本方法由於翻牆等原因還沒確定是否成功。

3.1 連結參考

(1)工具開源地址: https://github.com/google/battery-historian

(2)Install Docker安裝路徑:https://docs.docker.com/engine/installation/

(3)參考項目安裝 Docker
https://docs.docker.com/docker-for-windows/

http://wiki.jikexueyuan.com/project/docker/installation/mac.html

3.2 安裝Docker環境來安裝Battery History

(1)描述
根據gitbub上面介紹,Battery History工具的安裝有兩種方式:
A、通過安裝Docker環境來安裝。(這種方式很簡單,Docker真心好用,太彪悍了!)
B、安裝GO環境、Git環境、Python、Java環境(不推薦)

(2)Docker環境
Docker是一種容器,一般用於雲端運算和大資料平台。提倡的一種思想就是:軟體即服務。這句話不是蓋的,一句話就可以將別人發布的docker服務環境一次全部copy過來(注意是整個軟體環境哦,相當於複製了一台一模一樣的主機,連軟體都不要安裝了,全有了。彪悍吧!)
Docker只支援Windows10(mac貌似也支援)

(3)Docker安裝注意問題:翻牆

A、進部署好的伺服器docker,顯示錯誤如下:
{“UploadResponse”:[{“sdkVersion”:23,”historianV2Cs…
https://github.com/google/battery-historian/issues/64
解決:You need a network connection.需要翻牆。 動腦的centos無法翻牆訪問Google服務導致。

B、進部署好的動腦伺服器docker,沒有顯示錯誤,但是最上面提示了紅色的顏色塊,表示訪問出錯。
解決:無法翻牆訪問Google服務導致。

(4)操作命令

Gitbub上面是這樣的命令及地址:

docker -- run -p <port>:9999 gcr.io/android-battery-historian:2.1 --port 9999

這個裡面的地址貌似不能用(可能是翻牆軟體屏蔽了的原因),然後找到了一個老外的鏡像,是2.0版本的。(鏡像地址:blystad/battery-historian或者bhaavan/battery-historian)

關鍵:

docker -- run -p 6666:9999 blystad/battery-historian --port 9999

或者命令如下(上面這種是臨時開闢的程式服務,下面是開啟了一個單獨系統服務更正規的服務。):

docker run -d –p 9999:9999 bhaavan/battery-historian 
3.3 匯出手機的Bugreport日誌

輸入指令 adb bugreport > bugreport.txt匯出

3.4 上傳bugreport.txt檔案至 http://localhost:9999

效能最佳化之電量最佳化2-使用Battery Historian產生電量消耗報告

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.