1. 程式人生 > >耗電量統計:可構建低電耗應用-Battery Historian

耗電量統計:可構建低電耗應用-Battery Historian

官方解說

新的作業排程 API 支援您將系統作業推遲到後期或特定情況(例如,裝置在充電或已連線到 Wi-Fi),從而最大延長電池壽命。

新的 dumpsys batterystats 命令會生成耗電量統計資訊,方便您瞭解整個系統的用電情況以及應用對裝置電池的影響。您可以檢視電源事件的歷史記錄、每個 UID 和系統元件的大致用電量,等等。

陳科肇
Battery Historian 是一個新工具,可以將 dumpsys batterystats 的統計資訊轉成直觀的資訊,方便就電池進行除錯。該工具位於 https://github.com/google/battery-historian

介紹

Battery Historian 是檢查執行Android 5.0棒棒堂(API級別21)和更高版本的Andr​​oid裝置上的電池相關的資訊和事件,而該裝置是電池的工具。它允許應用程式開發人員能夠視覺化時間軸上的系統和應用程式級事件與平移和縮放功能,很容易看到各種彙總統計自其最後一次完全充電,並選擇一個應用程式,並檢查指標,具體到選擇的應用程式影響的電池。它還允許兩個bug報告的A / B對比,突出重點與電池相關指標的差異。

使用步驟

1.安裝Go Programming Language[go程式語言]

根據你的作業系統下載不同的安裝包
這個不多說,看官方教程操作

Getting Started

=============
Install the Go tools 安裝
Test your installation 測試安裝是否成功
Uninstalling Go 解除安裝Go
Getting help 配置幫助

GOROOT=E:\0Develop\Android\Battery Historian\Go\
GOPATH=%GOROOT%\work

測試是否安裝成功
在你的%GOPATH%下建立資料夾及.go檔案:

%GOPATH%/
                        src/
                        hello/
                        hello.go

hello.go檔案內容:

package main

import "fmt"

func main() {
    fmt.Printf("hello, world\n")
}

執行命令:

C:\> go install hello

執行完命令後,會在%GOPATH%目錄下生成以下檔案

%GOPATH%/
                        bin/
                        hello.exe

再執行命令:

C:\> %GOPATH%\bin\hello

即可輸出結果!
陳科肇

陳科肇

陳科肇

2.安裝Git

path = %path%;E:\0Develop\Git\bin

3.安裝Python 2.7版

確保Python 2.7版(而不是Python 3!)安裝。見https://python.org/downloads 如果不是,並確保python被新增到您的$PATH環境變數。
環境變數

path = %path%;E:\0Develop\Python27\;E:\0Develop\Python27\Scripts

4.安裝java環境

5.下載battery-historian程式碼和它的相關性

go get -d -u github.com/google/battery-historian/...

下載內容在你的Go建立的工作區目錄

6.執行battery-historian

cd %GOPATH%/src/github.com/google/battery-historian

# Compile Javascript files using the Closure compiler
go run setup.go

# Run Historian on your machine (make sure $PATH contains $GOBIN)
#go run cmd/battery-historian/battery-historian.go [--port <default:9999>]
go run cmd/battery-historian/battery-historian.go

注:你必須始終從 $GOPATH/src/github.com/google/battery-historian目錄裡面跑battery historian

cd $GOPATH/src/github.com/google/battery-historian
#go run cmd/battery-historian/battery-historian.go [--port <default:9999>]
go run cmd/battery-historian/battery-historian.go

執行完成!
陳科肇

7.如何採取一個錯誤報告

為了從你的Android裝置中的bug報告,你將需要下啟用USB除錯Settings > System > Developer Options。在Android 4.2以上版本,開發者選擇螢幕預設是隱藏的。您可以通過以下的說明啟用此這裡。

要獲得從開發裝置中的錯誤報告:

adb bugreport > bugreport.txt
#指定檔案位置 adb bugreport > C:\...\bugreport.txt,不指定,在當前執行命令的檔案目錄
#可以新增你的adb到環境變數中,例:path=%path%;I:\sdk\platform-tools

8.開始分析!

您現在的所有設定。執行historian和訪問的http://本地主機:9999和上傳bugreport.txt檔案,開始分析。
注:最好 用IE瀏覽器開啟
給個效果看看
陳科肇

時間線:

陳科肇

陳科肇

系統統計:

陳科肇

應用統計:

重要概念

Wakelocks:安卓耗電的元凶-Wakelock【喚醒鎖】

第三方安卓App呼叫到Wakelock,一旦呼叫了Wakelock,無論螢幕開關與否,CPU都會一直保持在執行狀態,永不休眠(Deep Sleep)。
這些第三方安卓App讓CPU沒法進入休眠狀態,安卓待機時電量依然刷刷地走。如何阻止App呼叫Wakelock就成為了安卓省電的關鍵。
Total number of wakeup alarms[喚醒報警總數]
陳科肇

重置彙總電池統計和歷史:

adb shell dumpsys batterystats --reset

Wakelock analysis[喚醒鎖分析]

預設情況下,Android不記錄時間戳用於特定應用的使用者空間wakelock轉換即使彙總統計是建立在經營的基礎上。如果你想讓Battery Historian在時間線上顯示wakelock關於每一應用的詳細資訊,你應該啟動實驗之前使用以下命令:

adb shell dumpsys batterystats --enable full-wake-history

注意,啟用full wakelock reporting 在幾小時內報告電池的歷史日誌溢位。使用此選項可用於短的測試執行(3-4小時)。

Kernel trace analysis[核心跟蹤分析]

生成一個跟蹤檔案記錄核心wakeup源和核心wakelock活動:
首先,將裝置連線到桌面/膝上型電腦,並啟用核心跟蹤日誌記錄:

$ adb root
$ adb shell
# Set the events to trace.
$ echo "power:wakeup_source_activate" >> /d/tracing/set_event
$ echo "power:wakeup_source_deactivate" >> /d/tracing/set_event

# The default trace size for most devices is 1MB, which is relatively low and might cause the logs to overflow.
# 8MB to 10MB should be a decent size for 5-6 hours of logging.

$ echo 8192 > /d/tracing/buffer_size_kb

$ echo 1 > /d/tracing/tracing_on
>與>>的區別
> 是定向輸出到檔案,如果檔案不存在,就建立檔案;如果檔案存在,就將其清空;一般我們備份清理日誌檔案的時候,就是這種方法:先備份日誌,再用`>`,將日誌檔案清空(檔案大小變成0位元組); >>是將輸出內容追加到目標檔案中。如果檔案不存在,就建立檔案;如果檔案存在,則將新的內容追加到那個檔案的末尾,該檔案中的原有內容不受影響。

然後,使用該裝置用於測試用例。
最後,提取日誌:

$ echo 0 > /d/tracing/tracing_on
$ adb pull /d/tracing/trace <some path>

# Take a bug report at this time.
$ adb bugreport > bugreport.txt

注意:

歷史學家的情節和(由於開機時間秒)涉及一會兒的事件實時(PST或UTC),而核心跟蹤檔案記錄事件。為了把這些事件有一個指令碼接近jiffies的UTC時間。該指令碼讀取記錄在dmesg當系統掛起並恢復UTC時間。指令碼的範圍僅限於本在dmesg時間戳的量。由於該指令碼使用dmesg的日誌,當系統暫停,有不同的指令碼,每個裝置,與作為特定裝置的dmesg的登入它試圖找到的唯一區別。這些指令碼已經被整合到電池歷史學家工具本身。

Powermonitor analysis[電力監測分析]

Powermonitor檔案應該有每行的格式如下:

<timestamp in epoch seconds> <amps>

從powermonitor檔案中的條目將在時間軸情節的頂部覆蓋。

為了確保powermonitor和bug報告時限都稍微對齊,請在執行任何powermonitor日誌記錄之前重置batterystats:

adb shell dumpsys batterystats --reset

並採取bug報告停車powermonitor日誌後不久。

相關推薦

耗電量統計構建應用-Battery Historian

官方解說 新的作業排程 API 支援您將系統作業推遲到後期或特定情況(例如,裝置在充電或已連線到 Wi-Fi),從而最大延長電池壽命。 新的 dumpsys batterystats 命令會生成耗電量統計資訊,方便您瞭解整個系統的用電情況以及應用對裝置電池的

Flutter新手入門從零構建應用

在這個系列中,我們將學習如何使用google的移動開發框架flutter建立一個電商應用。 本文是flutter框架系列教程的第一部分,將學習如何安裝Flutter開發環境並建立第一個 Flutter應用,並學習Flutter應用開發中的核心概念,例如widget、狀態等。 本系列教程包含如下四

Flutter入門教程從零構建應用(一)

在這個系列中,我們將學習如何使用google的移動開發框架flutter建立一個電商應用。 本文是flutter框架系列教程的第一部分,將學習如何安裝Flutter開發環境並建立第一個 Flutter應用,並學習Flutter應用開發中的核心概念,例如widget、狀態等。 本系列教

深入Jar包Gradle構建執行jar包與訪問jar包中資料夾與檔案

## 前言 Java的跨平臺功能聽起來很誘人可口,號稱“Write Once,Run Everywhere”,實際上是“Run Once,Debug Everywhere”... 在實際開發過程中還是會遇到各種各樣的坑的,剛剛解決了一系列問題,特地寫個文章總結一下。 ## 使用Gradle構建Jar包 感謝

Spark大數據的花火石!

protected lin ble mapred 學習 協調 架構 avi 好的 什麽是Spark?可能你非常多年前就使用過Spark,反正當年我四六級單詞都是用的星火系列。沒錯,星火系列的洋名就是Spark。當然這裏說的Spark指的是Apache Spark。Apac

勒索病毒入侵XP古董電腦尷尬一幕配置太被強制停止

微軟 電腦 臺灣 程序 用戶 上周爆發的勒索病毒至今已經讓數十萬PC受害,為了防止更多用戶感染,微軟和各家安全公司都紛紛給出更新補丁或者臨時防範策略。  不過,抵禦勒索病毒的終極措施或許只是一臺“古董PC”這麽簡單。  臺灣網友萊恩15日曬圖稱“電腦爛到病毒跑不動。”(WinXP+古董配置

【Android應用開發技術基礎構建】命令行下的Android應用開發

star andro all class文件 abs 2.3 pil data 資源 作者:郭孝星 微博:郭孝星的新浪微博 郵箱:[email protected]/* */ 博客:http://blog.csdn.net/allenw

一號旺鋪微信小程序三大新功能相互跳轉、批量管理門店

分享 使用 中介 合作 開發者工具 常用 消息 固定 打通 可相互跳轉、批量管理門店,小程序是抓住零售新機會的一把利器嗎?一號旺鋪專業、專註開發小程序,就微信小程序的三個功能與大家分享。 同一個公眾號下關聯的 10 個同主體小程序和 3 個非同主體小程序之間,可以調用接口直

python開發函數進階叠代的&叠代器&生成器

== ict turn lena log 中新 odin 使用 def 一,可叠代的&可叠代對象 1.一個一個的取值就是可叠代的 iterable#str list tuple set dict#可叠代的 ——對應的標誌 __iter__ 2.判斷一個變量

從入門到放棄,.net構建博客系統(一)系統構建

.net 通過 tro 周期 放棄 操作 images 容器 業務 demo:http://tonyblogs.top/ Git源碼:https://github.com/Halifa/TonyBlogs 項目采用的技術有:asp.net mvc4 + autofac +

Android 簡單案例移動的View

bool fst boolean store import cup tcl etc last CrossCompatibility.rar 1. VersionedGestureDetector.java import android.content.Context; i

概率統計數學期望,方差,協方差,相關系數,矩

es2017 ima mage 協方差 .com 相關系數 png nbsp 數學 概率統計:數學期望,方差,協方差,相關系數,矩

dockerDockerfile構建LNMP平臺

docker dockerfile docker lnmp docker build 1、dockerfile介紹 ?Dockerfile是Docker用來構建鏡像的文本文件,包含自定義的指令和格式。可以通過docker build命令從Dockerfile中構建鏡像。這個過程與傳統分布式集

洛谷3919持久化數組——題解

isdigit getchar() targe namespace 就會 sdi pro ont pan https://www.luogu.org/problemnew/show/P3919 如題,你需要維護這樣的一個長度為 N 的數組,支持如下幾種操作

制造企業視化生產管理成為主流趨勢

可視化生產 寶利通視頻會議 南方電訊多媒體集成 華興玻璃集團公司是一家集研發、生產、銷售日用玻璃為一體的大型制造企業,是國內日用玻璃制品行業的翹楚,產銷量及綜合實力位居行業首位。公司自1987年正式投產以來始終專註日用玻璃行業,目前生產規模居亞洲第一、世界第三。公司總部位於廣東省佛山市,公司現有職

5分鐘讀完華為區塊鏈白皮書關鍵信息推動構建一種新型價值網絡

華為區塊鏈昨天,華為全球分析師大會(2018HAS)在深圳舉行,華為雲BU總裁鄭葉來對外發布了《華為區塊鏈白皮書》。 5分鐘讀完華為區塊鏈白皮書關鍵信息:推動構建一種新型價值網絡 下面是璽哥整理的《華為區塊鏈白皮書》中的關鍵內容,以饗各位。 一、華為看區塊鏈興起 1、華為認為:電子現金交易的本質是貨幣(或類貨

UWP滾動的PivotHeader

style屬性 設計器 bject 也不會 horizon fse 左右 lB ima 原文:UWP:可滾動的PivotHeaderUWP開發裏,Pivot真是個令人又愛又恨的控件。為了實現某些可滾動Header的效果,有些大佬甚至去掉了原本的Header,使用一個List

一個超厲害的智能小程序接收你的小程序客服消息,無需開發,自動接入。

href app html style lan 切換 分享 同時 www. 它是一款智能小程序客服的小程序工具。分四步為大家測評下 ①進入小程序 ②登入賬號 ③查看回復消息 ④個人中心 一、進入小程序 它四個說明:登入,註冊,體驗,功能 1.登入界面,如果沒有賬號,請

鎖-概念重入鎖、中斷鎖、公平鎖、讀寫鎖

++ 重復 lse -- som HR read cep sync 可重入鎖 指的是在同一個thread中,獲取鎖之後再次使用同樣的方法或對象中的其他方法可以直接操作,而不需要重新獲取鎖。它是基於thread粒度的,per-thread。 不可重入鎖 指的是每次使用鎖方法時

wurstmeister/kafkadocker構建kafka遇到的問題

遇到 技術分享 解決方案 docker 描述 jvm -a png img 1. kafka 容器無法啟動 過程描述: docker ps -a 看到 Exited docker logs a87d9cd2a8ac 查看日誌: