本文档展示了 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 可在
http://localhost: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 在
http://localhost:port_number
运行。对于 Windows,Battery Historian 在http://your_IP_address:port_number
运行。点击浏览,然后选择您创建的 bugreport 文件。
点击提交。Battery Historian 会打开根据您的 Batterystats 数据创建的图表。
使用 Battery Historian 图表查看数据
Battery Historian 图表按时间顺序绘制与电源相关的事件。
当系统组件处于活动状态并因此从电池中汲取电流时,每一行都会显示一个彩色的条形段。图表不会显示组件使用了多少电池电量,只会显示应用是否处于活动状态。图表按类别组织,按时间顺序显示每个类别的条形,如图表x轴所示。
- 从下拉列表中添加其他指标。
- 将指针悬停在指标名称上,以查看有关每个指标的更多信息,包括图表中使用的颜色的键。
- 将指针悬停在条形上,以查看有关该指标和时间线上特定点的电池统计信息的更多详细信息。
其他 Batterystats 输出
您可以在 Battery Historian 图表后的统计信息部分查看 batterystats.txt
文件中的其他信息。
1 系统统计信息选项卡包含系统范围内的统计信息,例如蜂窝信号级别和屏幕亮度。此信息提供了设备上发生情况的总体情况。这对于确保没有外部事件影响您的测试特别有用。
2 应用统计信息选项卡包含有关特定应用的信息。使用应用选择窗格中的 3 按应用排序下拉列表对应用列表进行排序。您可以使用 4 应用下拉列表选择特定应用以查看其统计信息。