Android 使用 Batterystats 和 Battery Historian 分析电池用量

专注于Android开发,分享经验总结,欢迎加入

Android开发中涉及到耗电量怎么分析呢

google官方提供了文档,链接:https://developer.android.com/studio/profile/battery-historian

Batterystats 工具和 Battery Historian 脚本的基本用法和工作流程

Batterystats 是包含在 Android 框架中的一种工具,用于收集设备上的电池数据。您可以使用 adb 将收集的电池数据转储到开发计算机,并创建一份可使用 Battery Historian 分析的报告。Battery Historian 会将报告从 Batterystats 转换为可在浏览器中查看的 HTML 可视化内容

适合的场景:

  • 显示进程从什么位置以及通过何种方式消耗电池电量。
  • 识别系统为了延长电池续航时间可能会延迟甚至移除应用中的哪些任务

安装 Battery Historian

链接:https://github.com/google/battery-historian

1.使用Docker安装

安装 Battery Historian 的最简单方法是使用 Docker。对于其他安装方法(包括从源代码编译),请参阅项目的 GitHub 页面上的自述文件。要使用 Docker 进行安装,请执行以下操作:

  • 按照 Docker https://www.docker.com/ 网站上的说明安装 Docker 社区版

  • 要确认 Docker 是否已正确安装,请打开命令行并输入以下命令:

      docker run hello-world
    
  • 如果您已正确安装 Docker,将会看到如下输出:

      Unable to find image 'hello-world:latest' locallylatest: Pulling from library/hello-world78445dd45222: Pull completeDigest:sha256:c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7Status: Downloaded newer image for hello-world:latestHello 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 theexecutable 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 search battery
    
  • 在列出的列表中选取一个镜像

      docker run --name=battery -d -p 9999:9999 bhaavan/battery-historian
    
  • 拉取并运行battery-historian镜像,会自动下载并运行镜像,之前pull过了就直接运行

2.通过编译gitbub上面的源码来安装

  • 1.Go 环境安装

    • 链接:https://golang.org/doc/install

    • 配置GOROOT和GOPATH(配置环境变量)

    • GOROOT的作用是告诉 Go 命令和其他相关工具,配置的是 Go 的安装目录

    • GOPATH可以简单理解为是工程的目录,配置的是 Go 的工程路径

    安装完执行 go env 查看环境变量配置的是否一样,如下图

  • 2.Git 环境安装

    • 链接:https://git-scm.com/
  • 3.python环境安装,仅支持python2.7

    • 链接:https://www.python.org/
  • 4.Java 环境安装(配置环境变量)

    • 链接:https://www.oracle.com/java/technologies/javase-jdk8-downloads.html
  • 5.下载 Battery Historian

    • 链接:https://github.com/google/battery-historian 源码并且运行

        下载到GOPATH配置目录下,耗时长 go get -d -u github.com/google/battery-historian/...
      
    • 进入到$GOPATH/src/github.com/google/battery-historian目录

    • 运行Battery Historian

        go run setup.go
      

      如果没有下载成功,可以手动下载

    • closure-library

      • https://github.com/google/closure-library
    • closure-compiler

      • https://github.com/google/closure-compiler
    • flot-axislabels

      • https://github.com/markrcote/flot-axislabels

      解压到 GOPATH/src/github.com/google/battery-historian/third_party,如果没有该文件夹需要去创建,文件夹下方的的 closure-compiler 和 closure-library 和 flot-axislabels

目录如下

  • 在 battery-historian 文件夹执行

      go run cmd/battery-historian/battery-historian.go
    

启动程序后,在浏览器输入localhost:9999,会出现如下界面

3.Batterystats 采集数据

  • 1.将移动设备连接到计算机

  • 2.在终端窗口中,关闭正在运行的 adb 服务器

      adb kill-server
    
  • 3.重启 adb 并检查是否有已连接的设备

      adb start-serveradb devices
    

如下图

  • 4.重置电池数据收集

      adb shell dumpsys batterystats --reset
    

设备始终会在后台收集 batterystats 和其他调试信息。重置操作会清除旧的电池收集数据。如果不重置,输出内容会超大

  • 5.断开设备与计算机的连接,以便仅消耗设备电池的电量

  • 6.使用您的应用并执行您想要获取数据的操作;例如,断开 WLAN 连接并将数据发送到云端

  • 7.重新手机连接

  • 8.确保您的手机已被识别:

      adb devices
    
  • 9.转储所有电池数据。此过程可能需要一段时间:

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

    系统会使用可选路径参数在您指定的目录中创建 batterystats.txt 文件。如果您没有指定路径,则会在您的主目录中创建该文件

  • 10.使用原始数据创建报告

    在创建报告之前,可以使用monkey针对某个应用做测试

      adb shell monkey -p com.tencent.mm -v 1000
    

    如果要保存在某个目录下,先进入此目录

      cd /Users/Desktop/battery
    
    • 对于搭载 Android 7.0 及更高版本的设备:

        adb bugreport bugreport.zip
      
    • 对于搭载 Android 6.0 及更低版本的设备:

        adb bugreport bugreport.txt
      

    错误报告可能需要几分钟才能完成。在完成之前,请勿断开设备连接或取消该进程

    与上面的 batterystats.txt 一样,这些文件是系统使用可选的路径参数在您指定的目录中创建的。如果您没有指定路径,系统将在您的主目录中创建这些文件

导出的文件如下

4.将采集到的数据上传

  • 打开浏览器输入 localhost:9999,点击上传,上传之后出现submit 提交按钮

  • 点击提交后,进入电池耗量分析界面

另一张视图

在搭建的过程中遇到些问题,上传zip包之后报错,无法加载视图
Docker搭建的方式,对于安卓6.0以上不友好,出现上传zip后报错,无法加载视图的情况:

解决方式:使用线上版: https://bathist.ef.lc/

报错如下:

微信公众号 -->> 他晓 (欢迎加入)

Android 使用 Batterystats 和 Battery Historian 分析电池用量相关推荐

  1. android 解压zip报错_Android 使用 Batterystats 和 Battery Historian 分析电池用量

    Android 使用 Batterystats 和 Battery Historian 分析电池用量 专注于Android开发,分享经验总结,欢迎加入 Android开发中涉及到耗电量怎么分析呢 go ...

  2. android studio 电量分析,使用 Batterystats 和 Battery Historian 分析电池用量

    本演示介绍了 Batterystats 工具和 Battery Historian 脚本的基本设置步骤和工作流.如需了解如何使用 Battery Historian 检查耗电模式,请参阅使用 Batt ...

  3. Battery Historian分析手机耗电神器

    极力推荐Android 开发大总结文章:欢迎收藏 程序员Android 力荐 ,Android 开发者需要的必备技能 本篇文章主要介绍 Android 开发中 电量 的部分知识点,通过阅读本篇文章,您 ...

  4. Ubuntu安装Battery Historian分析电量(配置环境)

    Android提供了一款开源的,基于浏览器的电量分析工具Battery Historian进行电量分析,可以通过该工具清晰的分析各种耗电情况 一.由于Battery historian是基于go语言的 ...

  5. Battery Historian

    文章目录 如何使用battery history 1. 安装Docker 2. 检验Docker是否安装成功 3. 运行battery historian 使用Batterystats收集数据 Bat ...

  6. Android耗电量线下监控: Battery Historian

    改不完的 Bug,写不完的矫情.公众号 杨正友 现在专注移动基础平台开发 ,涵盖音视频, APM和信息安全等各个知识领域:只做全网最 Geek 的公众号,欢迎您的关注!精彩内容不容错过~ 一. 发热案 ...

  7. 【Android 电量优化】电量优化 ( Battery Historian 环境要求 | 电量分析报告 | 电量优化三原则 | 电量优化注意事项 )

    文章目录 一.Battery Historian 环境要求 二.上传电量报告 三.Battery Historian 电量分析报告 四.电量优化三原则 五.电量优化注意事项 参考 Google 官方文 ...

  8. android 耗电分析工具,使用Battery Historian工具分析Android耗电分析

    Android8.0以上分析使用Energy Profiler,低版本使用Battery Historian,为了降低配置的难度建议使用docker容器运行Battery Historian镜像 在d ...

  9. 【Android 电量优化】电量优化 ( 获取电量分析报告 | 阿里云服务器搭建 Battery Historian | 上传并生成分析报告 )

    文章目录 一.Battery Historian 搭建环境 二.获取 Android 手机电量报告 1.重置电量状态 2.开启获取 WeakLock 信息 3.获取手机电量报告 三.阿里云服务器搭建 ...

最新文章

  1. 逻辑斯蒂回归(Logistics Regression)
  2. python可以自学吗需要什么基础-我是一个毫无基础的菜鸟,想自学Python,该怎么入手?...
  3. LeetCode - 413. Arithmetic Slices - 含中文题意解释 - O(n) - ( C++ ) - 解题报告
  4. 带有Gluon Ignite和Dagger的JavaFX中的依赖注入
  5. 问题 C: 能被3整除吗?
  6. 软件设计师09-面向对象-图集
  7. Python命令行解析工具argparse
  8. HBase Region 自动拆分策略
  9. 北大计算机学硕几年,我的OI经历 --张正超(深学教育资深教练、北大计算机系研究生)...
  10. 软件项目投标流程及注意事项
  11. 压力测试常用专业名词解释
  12. 2022智源大会议程公开 | 预训练大模型论坛
  13. 叮咚智能音箱使用体验:好看的皮囊千篇一律,有趣的灵魂万里挑一
  14. 函数极限什么时候可以拆分
  15. 改革人工智能时代的劳动技能教育
  16. java游戏暗金装备_暗黑2装备升级公式图解(暗金装备升级一览表)
  17. 推荐阅读:《我在赶集网的两个月(完整版)》
  18. 拨号上网、ISDN、ADSL、光纤上网比较
  19. FTP服务器-vsftpd
  20. 人工智能既预测世界杯冠军,还帮你“讨债”?

热门文章

  1. Unity中Avatar换装实现
  2. 华为防火墙技术-防火墙基础
  3. OpenCV-python 摄像头图像采集程序
  4. 抓扑克牌的手气——三人手牌发放及叫地主机制
  5. ubuntu 18.04安装USB wifi接收器的驱动
  6. 算法学习之寻找最长等差数列
  7. mysql 获取日期前一天 后一天
  8. 强化学习大牛Sergey Levine:将RL作为可扩展自监督学习的基础
  9. 计算机应用基础操作题文字录入,计算机应用基础期末考试题 一、 文字录入与排版(20分) 试用Word字处理软件录入一篇文章(每个学员的内容...
  10. 【21】printf()与sprintf()的区别