本文档展示了 Batterystats 工具和 Battery Historian 脚本的基本设置步骤和工作流程。要了解如何使用 Battery Historian 检查电池消耗模式,请参阅 使用 Battery Historian 分析功耗。
Batterystats 是 Android 框架中包含的一个工具,用于收集设备上的电池数据。您可以使用 adb
将收集到的电池数据转储到您的开发机器上,并创建一个报告,您可以使用 Battery Historian 分析该报告。Battery Historian 将 Batterystats 的报告转换为可在浏览器中查看的 HTML 可视化效果。
Batterystats 和 Battery Historian 可用于以下用途:
- 向您展示进程从电池中汲取电流的位置和方式。
- 确定应用中可以推迟或删除的任务,以延长电池续航时间。
安装 Battery Historian
您可以使用 Docker 安装 Battery Historian。有关替代安装方法(包括从源代码构建),请参阅项目 GitHub 页面上的 自述文件。要使用 Docker 安装,请执行以下操作:
要确认 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
在运行 Battery Historian 镜像之前,启动 Docker Desktop 应用(这是 Docker 的 GUI 前端)。运行此操作将初始化 Docker 工具。除非您至少执行此操作一次,否则 Battery Historian 不会运行。
首次运行 Battery Historian 时,请使用命令行运行。Docker Desktop 应用程序不允许您指定 Web 服务器运行的端口。您只能通过命令行进行此操作。但是,在您成功地从命令行运行容器后,Docker Desktop 中会创建一个条目,然后您可以使用相同的监听端口从 Docker Desktop 启动它。
使用以下命令运行 Battery Historian 镜像:
docker run -p port_number:9999 gcr.io/android-battery-historian/stable:3.1 --port 9999
Battery Historian 使用您选择的端口,如使用
port_number
指定。在您的浏览器中导航到 Battery Historian 以确认它正在运行。地址因您的操作系统而异。
- 对于 Linux 和 Mac
- Battery Historian 可在
https://127.0.0.1:port_number
访问。 - 对于 Windows
- 启动 Docker 后,它会告诉您它正在使用的机器的 IP 地址。例如,如果 IP 地址为 123.456.78.90,则 Battery Historian 可在
http://123.456.78.90:port_number
访问。
然后它会显示 Battery Historian 的起始页面,您可以在其中上传和查看电池统计信息。
使用 Batterystats 收集数据
要使用 Batterystats 从您的设备收集数据并在 Battery Historian 中打开它,请执行以下操作:
将您的移动设备连接到您的计算机。
在终端窗口中,通过运行以下命令关闭正在运行的
adb
服务器:adb kill-server
重新启动
adb
并通过运行以下命令检查已连接的设备。adb devices
它会列出您的设备,类似于以下示例输出。
如果它没有列出任何设备,请确保您的手机已连接并且已启用 USB 调试,然后停止并重新启动
adb
。通过运行以下命令重置电池数据收集:
adb shell dumpsys batterystats --reset
设备始终在后台收集 Batterystats 和其他调试信息。重置会清除之前的电池收集数据。如果您不重置,输出可能会非常大。
将您的设备从计算机断开连接,以便您只从设备的电池中汲取电流。
使用您的应用程序并执行您想要收集数据的操作。例如,断开 Wi-Fi 连接并将数据发送到云端。
重新连接您的手机。
确保您的手机已识别并运行以下命令:
adb devices
通过运行以下命令转储所有电池数据。这可能需要一些时间。
adb shell dumpsys batterystats > [path/]batterystats.txt
batterystats.txt
文件将创建在您使用可选路径参数指定的目录中。如果您没有指定路径,则该文件将创建在您的主目录中。从原始数据创建报告。
- 对于运行 Android 7.0 及更高版本的设备
-
adb bugreport [path/]bugreport.zip
- 对于运行 Android 6.0 及更低版本的设备
-
adb bugreport [path/]bugreport.txt
bugreport 可能需要几分钟才能完成。在它完成之前,请不要断开您的设备连接或取消该进程。
与
batterystats.txt
一样,这些文件将创建在您使用可选path
参数指定的目录中。如果您没有指定路径,它们将创建在您的主目录中。如果它尚未运行,请使用以下命令运行 Battery Historian:
docker run -p port_number:9999 gcr.io/android-battery-historian/stable:3.1 --port 9999
要在 Battery Historian 中查看您的数据,请在浏览器中打开 Battery Historian。对于 Mac 和 Linux,Battery Historian 运行在
https://127.0.0.1:port_number
。对于 Windows,Battery Historian 运行在http://your_IP_address:port_number
。单击浏览,然后选择您创建的 bugreport 文件。
单击提交。Battery Historian 将打开一个根据您的 Batterystats 数据创建的图表。
使用 Battery Historian 图表查看数据
Battery Historian 图表随时间推移绘制与电源相关的事件。
当系统组件处于活动状态并因此从电池中汲取电流时,每一行都会显示一个彩色的条形段。图表不会显示组件使用了多少电池——只显示应用程序是否处于活动状态。图表按类别组织,随时间推移显示每个类别的条形图,如图表横坐标所示。
- 从下拉列表中添加其他指标。
- 将指针悬停在指标名称上,可以查看有关每个指标的更多信息,包括图表中使用的颜色的键。
- 将指针悬停在一个条形图上,可以查看有关该指标和时间轴上特定点的电池统计信息的更多详细信息。
其他 Batterystats 输出
您可以在 Battery Historian 图表后的统计信息部分查看 batterystats.txt
文件中的其他信息。
1 系统统计信息选项卡包含系统范围的统计信息,例如蜂窝信号级别和屏幕亮度。这些信息提供了设备发生情况的总体情况。这对于确保没有外部事件影响您的测试特别有用。
2 应用程序统计信息选项卡包含有关特定应用程序的信息。使用应用程序选择窗格中的 3 按应用程序排序下拉列表对应用程序列表进行排序。您可以使用 4 应用程序下拉列表选择特定应用程序以查看其统计信息。