標籤:安裝 使用 通話 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產生電量消耗報告