使用 Batterystats 和 Battery Historian 剖析電池用量

在這個逐步操作說明中,我們將介紹 Batterystats 工具與 Battery Historian 指令碼的基本設定步驟和工作流程。如要瞭解如何使用 Battery Historian 檢查電池耗電模式,請參閱「使用 Battery Historian 分析電力使用情形」。

Batterystats 是 Android 架構中的一項工具,可收集裝置中的電池資料。您可以利用 ADB 將收集到的電池資料轉儲到開發機器,然後建立可透過 Battery Historian 分析的報表。Battery Historian 會將報表從 Batterystats 轉換成 HTML 圖表,方便您在瀏覽器中查看。

使用時機:

  • 瞭解程序中消耗電池電力的環節和方式。
  • 找出應用程式中可延遲或甚至移除的工作,以提升電池續航力。

安裝 Battery Historian

如要安裝 Battery Historian,最簡單的方法就是使用 Docker。其他安裝方式 (包括透過原始碼建構) 請見專案 GitHub 頁面中的讀我檔案。如要透過 Docker 安裝,按照下列步驟操作:

  1. 依據 Docker 網站上的操作說明安裝 Docker Community Edition。

  2. 如要確認 Docker 是否已正確安裝,請開啟指令列並輸入下列指令:

    docker run hello-world
    

    如果已正確安裝 Docker,您會看到如下的輸出內容:

    Unable to find image 'hello-world:latest' locally
    latest: Pulling from library/hello-world
    78445dd45222: Pull complete
    Digest:
    sha256:c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7
    Status: Downloaded newer image for hello-world:latest
    
    Hello from Docker!
    This message shows that your installation appears to be working correctly.
    
    To generate this message, Docker took the following steps:
    1. The Docker client contacted the Docker daemon.
    2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
    4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal
    
  3. 使用下列指令執行 Battery Historian 映像檔:

    docker run -p port_number:9999 gcr.io/android-battery-historian/stable:3.0 --port 9999
    

    Battery Historian 會使用您選擇的通訊埠,像是透過 port_number 指定的通訊埠。

  4. 在瀏覽器中前往 Battery Historian 頁面,確認該工具正在執行。 相關位址會因您的作業系統而異:

    Linux 和 Mac

    Battery Historian 的位址是 http://localhost:port_number

    Windows

    啟動 Docker 後,系統會指出此工具所用電腦的 IP 位址。舉例來說,如果 IP 位址是 123.456.78.90,代表 Battery Historian 的位址是 http://123.456.78.90:port_number
    Battery Historian 的起始網頁將會開啟,您可以在這裡上傳及查看電池統計資料。

    Battery Historian 的起始網頁
    圖 1. Battery Historian 的起始網頁

使用 Batterystats 收集資料

如要使用 Batterystats 從裝置收集資料,然後在 Battery Historian 中開啟,請執行以下操作:

  1. 將行動裝置連接到電腦。

  2. 在終端機視窗中,關閉執行中的 ADB 伺服器。

    adb kill-server
    
  3. 重新啟動 ADB,然後檢查是否有已連接的裝置。

    adb devices
    

    畫面中應會列出您的裝置,類似於以下範例的輸出內容。

    ADB 裝置的輸出內容
    圖 2. adb devices 的輸出內容,顯示有一部連接的裝置

    如果沒有看到任何裝置,請確認手機已經連接,且已開啟 USB 偵錯功能,然後終止並重新啟動 ADB。

  4. 重設電池資料的收集作業。

    adb shell dumpsys batterystats --reset
    

    裝置一律會在背景收集 Batterystats 和其他偵錯資訊。當您選擇重設之後,系統會清除舊的電池收集資料。因此若未重設,輸出內容會非常龐大。

  5. 中斷裝置與電腦的連結,讓裝置只從自身的電池取得電力。

  6. 使用應用程式並執行需要用到資料的操作,例如中斷 Wi-Fi 連線,並傳送資料至雲端。

  7. 重新連接手機。

  8. 確保系統已可辨識您的手機:

    adb devices
    
  9. 轉儲所有電池資料。這可能需要一段時間:

    adb shell dumpsys batterystats > [path/]batterystats.txt
    

    系統會使用選用路徑引數,在您指定的目錄中建立 batterystats.txt 檔案。如果您未指定路徑,系統則會在主目錄中建立檔案。

  10. 使用原始資料建立報表。

    搭載 Android 7.0 以上版本的裝置:

    adb bugreport [path/]bugreport.zip

    搭載 Android 6.0 以下版本的裝置:

    adb bugreport [path/]bugreport.txt

    錯誤報告可能需要幾分鐘才能製作完成。在此之前,請勿中斷裝置連結或取消程序。

    和上述的 batterystats.txt 相同,系統會使用選用的 path 引數,在您指定的目錄中建立這些檔案。如果您未指定路徑,系統則會在主目錄中建立上述檔案。

    如果 Battery Historian 尚未執行,請使用以下指令執行此工具:

    docker run -p port_number:9999 gcr.io/android-battery-historian/stable:3.0 --port 9999
    
  11. 如要在 Battery Historian 中檢視資料,請在瀏覽器中開啟 Battery Historian (Mac 和 Linux 的 Battery Historian 會在 http://localhost:port_number 執行;Windows 的 Battery Historian 則在 http://your_IP_address:port_number 執行)。

  12. 按一下「Browse」,然後選擇您在上述步驟中建立的錯誤報告檔案。

  13. 按一下「Submit」,Battery Historian 會開啟依據 Batterystats 資料建立的圖表。

使用 Battery Historian 圖表檢視資料

Battery Historian 會以圖表的方式顯示一段時間內的電力相關事件。

當系統元件因處於使用狀態而消耗電池電力時,圖表中的每一列都會顯示彩色的長條區段。此圖表「不會」顯示元件已使用「多少」電力,只會顯示應用程式處於啟用狀態。系統會按照類別來整理圖表,並以長條圖顯示各類別的長期變化,如圖表的 X 軸所示。

Battery Historian 圖表範例
圖 3. Battery Historian 圖表範例

  1. 從下拉式清單新增其他指標。
  2. 將滑鼠游標懸停在資訊圖示上,即可查看每個指標的詳細資訊,包括圖表中所用顏色的圖例說明。
  3. 將游標懸停在長條上,即可查看有關該指標的詳細資訊,以及時間軸上特定時間點的電池統計資料。

其他 Batterystats 輸出內容

在 Battery Historian 圖表下方的統計資料部分中,您可以查看 batterystats.txt 檔案的其他相關資訊。

Battery Historian 的統計資料部分
圖 4. Battery Historian 的統計資料部分

1「System Stats」分頁包含整個系統的統計資料,例如電池信號等級和螢幕亮度。此資訊可有助於您全面掌握裝置的運作情況,如要確保沒有外部事件影響您的測試,這就特別有用。

2「App Stats」分頁包含特定應用程式的資訊。請使用左側「App Selection」窗格中的「Sort apps by」下拉式選單 (3) 排序應用程式清單。您可以使用下方的應用程式下拉式選單 (4),選取要查看哪個特定應用程式的統計資料。