app耗电量测试

目录

目录 

1. 引言 

2. 测试方法 

2.1. 直接观察 

2.2. 使用adb命令进行统计 

3. 典型的耗电场景 

3.1. 定位 

3.2. 网络传输 

3.3. 音视频播放 

4. app电量分析工具 

4.1. Batterystats 

4.2. Battery Historian 

5. 环境安装 

5.1. adb命令 

5.2. 安装go 

5.3. 安装git 

5.4. 安装python2.7 

5.5. 安装java 

5.6. 下载battery-historian代码及其依赖 

5.7. 修改Closure compiler版本号 

5.8. 编译battery-historian 

5.9. 运行battery-historian 

5.10. 连接设备 

6. 使用Batterystats收集数据 

6.1. 重置电池数据收集 

6.2. 断开连接 

6.3. 执行测试场景 

6.4. 重新连接手机 

6.5. 转储所有电池数据 

6.6. 使用原始数据生成报告 

6.7. 打开battery-historian 

6.8. 上传报告文件 

6.9. 提交 

7. 使用Battery Historian图表查看数据 

8. 其他 Batterystats 输出 

9. 使用 Battery Historian 分析耗电情况 

10. 常见问题 

10.1. 使用go get下载battery-historian项目依赖失败 

10.2. 使用go run编译battery-historian时失败 

10.3. 上传文件后不出现submit按钮 

10.4. tab页historian无法加载 

10.5. js文件加载失败 

  1. 引言

电量测试就是测试app程序在移动设备上消耗的电量,正常情况下app的耗电是比较平稳的。

  1. 测试方法
    1. 直接观察

现在许多手机都有电量百分比显示的功能,我们可以通过在固定时间内只操作某个app,计算出电池百分比的差值。

然后卸载app,在同样的时间内不做任何操作,计算出电池百分比的差值。

两者差值进行对比,判断电量的消耗。

    1. 使用adb命令进行统计

本文主要描述此种方式,使用Batterystats进行数据收集,然后使用Battery Historian进行数据展示。

  1. 典型的耗电场景
    1. 定位

定位,尤其是调用GPS定位

    1. 网络传输

尤其是非Wifi环境

    1. 音视频播放
  1. app电量分析工具
    1. Batterystats

batterystats 是Android SDK自带的一个工具,用于收集设备上的电池数据。

    1. Battery Historian

battery Historian会把收集到的电池数据以html文件的形式展示出来。

这里我们使用编译源码的方式来安装battery Historian。

  1. 环境安装
  1. adb命令

adb命令包含在Android SDK中,这里通过安装 Android Studio,来安装Android SDK。

安装后,启动 Android Studio,下载 SDK(需要一定的时间)。

SDK下载完成后,在环境变量Path中添加adb命令路径。C:\Users\***\AppData\Local\Android\Sdk\platform-tools

在命令行界面输入adb version出现如下界面,说明adb配置成功

 

  1. 安装go

battery-historian使用go语言进行编译,所以这里要安装go。

下载地址:Downloads - go.dev

 

在命令行界面输入go version出现如下界面,说明go安装成功

 

  1. 安装git

根据向导按步安装即可,安装完以后,在桌面鼠标右键,选择Git Bash Here,出现如下页面

 

 

  1. 安装python2.7

注意,不是python3。

安装完成后,在环境变量Path中添加python安装路径

在命令行界面输入python -V出现如下界面,说明python安装成功(注意:-V,V大写)

 

  1. 安装java

在命令行界面输入java -version,出现如下界面,说明安装成功

 

  1. 下载battery-historian代码及其依赖

使用命令go get -d -u github.com/google/battery-historian/

 

下载完后,会在环境变量GOPATH的路径下看到下载的pkg,GOPATH是在安装go的时候自动配置的,默认配置地址是C:\Users\***\go,可以自定义

 

 

  1. 修改Closure compiler版本号

在编译的时候使用的工具是第三方的工具Closure compiler,我们一定要注意版本,建议修改成最稳定的20190513版本

修改setup.go文件如下:

 

  1. 编译battery-historian

进入上面步骤下载的battery-historian目录:

cd F:\workspace\go\pkg\mod\github.com\google\battery-historian@v0.0.0-20170519220231-d2356ba4fd5f

执行命令go run setup.go进行编译

 

  1. 运行battery-historian

在路径F:\workspace\go\pkg\mod\github.com\google\battery-historian@v0.0.0-20170519220231-d2356ba4fd5f下,使用命令go run cmd/battery-historian/battery-historian.go运行battery-historian,默认端口号是9999

 

运行完以后,在浏览器输入地址http://localhost:9999可以看到如下界面

 

  1. 连接设备

进行耗电量测试时,最好使用真机

  1. 用USB数据线连接真机与电脑
  2. 打开真机的开发者选项(版本号连续点击7或5次开启)
  3. 打开USB调试开关
  4. 打开命令行界面,输入adb devices,出现真机设备编号,表示设备连接成功

  1. 使用Batterystats收集数据
    1. 重置电池数据收集

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

adb命令:adb shell dumpsys batterystats --reset

 

    1. 断开连接

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

    1. 执行测试场景

操作app,执行想要验证的场景

    1. 重新连接手机

adb命令:adb devices

    1. 转储所有电池数据

adb命令:adb shell dumpsys batterystats > D:\testresult\battery\batterystats.txt

 

 

    1. 使用原始数据生成报告

adb命令:adb bugreport > D:\testresult\battery\bugreport.txt

此操作需要花费几分钟的时间,在完成之前,请勿断开设备连接或取消任务

 

 

    1. 打开battery-historian

在浏览器输入地址http://localhost:9999

    1. 上传报告文件

点击 Browse,然后选择报告文件。

 

    1. 提交

点击 Submit,Battery Historian 将打开根据 Batterystats 数据创建的图表。

 

 

  1. 使用Battery Historian图表查看数据

Battery Historian 图表会显示一段时间内与电源相关的事件

当系统组件处于活动状态时,每行都会显示一个彩色条形段,以此表示正在消耗电池电量。该图表不会显示该组件使用的电量,仅表示相关应用处于活动状态。图表按类别进行整理,并显示每个类别随时间变化的一个条形,如图表的 X 轴所示。

 

从下拉列表中添加其他指标。

将光标悬停在信息图标上可查看有关每个指标的更多信息,包括图表中使用的颜色对应的键。

将光标悬停在某个条形上可查看有关该指标的更多详细信息以及时间轴上特定点的电池统计信息。

  1. 其他 Batterystats 输出

你可以在 Battery Historian 图表下方统计信息部分的 batterystats.txt 文件中查看其他信息。

 

System Stats 标签页包含系统范围的统计信息,例如电池信号电平和屏幕亮度。此信息可全面反映设备的具体情况。这对于确保没有任何外部事件影响你的测试尤为有用。

App Stats标签页包含有关特定应用的信息。使用左侧“App Selection”中的可以对应用列表进行排序。使用可以查看指定应用的统计信息。

  1. 使用 Battery Historian 分析耗电情况

此部分可参考安卓官方文档-开发者指南

https://developer.android.google.cn/topic/performance/power/battery-historian?hl=zh-cn

  1. 常见问题
    1. 使用go get下载battery-historian项目依赖失败

执行命令go get -d -u github.com/google/battery-historian/…时,报错:

 

解决方式如下:

 

1、设置GOPROXY代理:

go env -w GOPROXY=https://goproxy.cn,direct

2、设置GOPRIVATE来跳过私有库,比如常用的Gitlab或Gitee,中间使用逗号分隔:

go env -w GOPRIVATE=.gitlab.com,.gitee.com

3、Go 设置了默认的GOSUMDB=sum.golang.org,这个网站是被墙了的,用于验证包的有效性,可以通过如下命令关闭:

go env -w GOSUMDB=off

4、可以设置 GOSUMDB=“sum.golang.google.cn”, 这个是专门为国内提供的sum 验证服务:

go env -w GOSUMDB="sum.golang.google.cn"

    1. 使用go run编译battery-historian时失败

使用命令go run setup.go编译battery-historian时,报错:

 

解决方式如下:

  1. 执行命令go mod init battery-historian@v0.0.0-20170519220231-d2356ba4fd5f

 

  1. go mod init之后,再次执行go run setup.go,报错:

 

根据错误提示继续执行命令:

go get github.com/google/battery-historian/bugreportutils

go get github.com/google/battery-historian/historianutils

  1. 再次执行go run setup.go,报错:

 

根据错误提示,依次手动下载closure-library、flot-axislabels

如果执行git clone始终下载不下来的话,可以直接到github上下载zip包,然后解压到third_party文件夹下

 

 

    1. 上传文件后不出现submit按钮

 

打开http://ip地址:9999页面,上传结果文件后,页面无反应,通过F12,可以看到页面的一些报错,不出现submit按钮的原因是historian-optimized.js报错

解决方式如下:

  1. templates\base.html,修改ds版本为<script src="https://cdn.bootcdn.net/ajax/libs/d3/3.5.9/d3.min.js"></script>

 

  1. 重新编译运行

 

    1. tab页historian无法加载

 

通过F12查看到控制台有报错:google is not defined

解决方式如下:

1、这里需要打开代理(可咨询公司IT运维)

 

2、刷新页面

 

    1. js文件加载失败

因为网络原因,页面上一些js可能加载失败

 

解决方式如下:

  1. 替换js文件地址

查找替换文件地址的网址:https://www.bootcdn.cn/

以替换jquery-ui.min.js的地址举例,jquery-ui.min.js的报错信息是:

GET http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js net::ERR_CONNECTION_ABORTED

在bootcdn中搜索jqueryui关键字,找到对应1.11.2版本号的jquery-ui.min.js链接地址

 

  1. C:\Users\***\go\pkg\mod\github.com\google\battery-historian@v0.0.0-20170519220231-d2356ba4fd5f\templates下替换base.html里的内容,在base.html中将jquery-ui.min.js的地址

替换成

 

  1. 重新编译运行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/57336.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

盘点COVID-19新冠药物和疫苗研发进展

COVID-19是由严重急性呼吸系统综合症冠状病毒2&#xff08;SARS-CoV-2&#xff09;引起的一种传染病&#xff0c;这是一种单股正链RNAβ冠状病毒&#xff0c;它是Beta-CoV谱系B&#xff08; Sarbecovirus亚属&#xff09;。 COVID-19代表着全球健康威胁&#xff0c;并且是可能引…

药物临床试验数据递交FDA的规定

信息来源&#xff1a; https://www.fda.gov/industry/fda-data-standards-advisory-board/study-data-standards-resources STUDY DATA TECHNICAL CONFORMANCE GUIDE v4.9 (March 2022) (研究数据技术一致性指南) 仅提取该文档中的部分内容加以翻译&#xff0c;以下中文都是…

姜敬哲/孙燕妮/原丽红合作开发可用于病毒快速分类的工具PhaGCN2

南海水产研究所姜敬哲团队、香港城市大学孙燕妮团队、广东药科大学原丽红合作开发的可用于病毒快速分类生信工具 使用PhaGCN2对病毒基因组片段分类 Virus classification for viral genomic fragments using PhaGCN2 文章链接&#xff1a;https://www.researchsquare.com/artic…

多组学在药物机制解析和诊断标志物开发中的应用

链接&#xff1a;多组学在药物机制解析和诊断标志物开发中的应用_哔哩哔哩_bilibili 药物研发流程和多组学前沿技术 药物研发流程遇到的挑战 流程&#xff1a;新药的发现——临床前研究——临床研究 挑战&#xff1a; 诊断是否清晰、机制是否明确、靶点是否可靠、药物是否有…

药物研发早期预测细胞毒性的解决方案

药物从设计到上市的整个研究阶段&#xff0c;毒性通常是导致研发失败的最主要原因。即使上市以后还有许多药物由于出现研发阶段未能发现的毒性而被撤市或严格限制使用。因此&#xff0c;如何及时、准确、快速地评价药物毒性便成为药物开发中的一个重要问题。 在体外快速的、高…

针对新冠病毒,盛普始终坚持多靶标协同的防治病毒药物研发

全球范围内的新冠确诊人数仍旧在增加,“特效治疗药”依然没有找到。凛冬已至,更适于病毒传播的寒冷高湿天气已经笼罩了半个地球。在一片阴霾的疫情当中,“希望之光”开始浮现,新冠疫苗和单一靶标的小分子药物开始被世界各国政府应急准入市场。这些疫苗和小分子药物依靠海量…

3CLpro蛋白酶抑制剂,如何靠实力进入新冠病毒诊疗方案

3月15日&#xff0c;国家卫健委发布《新型冠状病毒肺炎诊疗方案&#xff08;试行第九版&#xff09;》&#xff0c;在抗病毒治疗中&#xff0c;抗新冠病毒药物PF-07321332/利托那韦片&#xff08;Paxlovid&#xff09;被写入诊疗方案。Paxlovid是由两种抗病毒药物组成&#xff…

关于CV算法岗就业相关问题,精华回答分享

粉丝提问&#xff1a; 你好&#xff0c;看星球上做前端&#xff0c;后端&#xff0c;java 的人比较多&#xff0c;好像没有看到有多少人做算法&#xff0c;我现在已经毕业了&#xff0c;是一名 cv 算法工程师&#xff0c;但是我现在很苦恼&#xff0c;感觉自己代码能力很弱&am…

chatgpt赋能python:Python自动打开软件:实现轻松便捷的操作

Python自动打开软件&#xff1a;实现轻松便捷的操作 在许多工作场所&#xff0c;我们可能需要反复打开某个软件&#xff0c;费时费力。那么有没有一种方式能够轻松地自动打开特定软件呢&#xff1f;此时Python便是一个好帮手。PythonとWINDOWS关联性较强&#xff0c;可以方便地…

Golang/Python 调用 openAI 的API 详解

学习目标&#xff1a; OpenAI API介绍 学习如何通过 Golang 使用 OpenAI 的 API OpenAI 的常用的参数及其说明 了解OpenAI API 中令牌&#xff08;tokens) OpenAI API 提供了几个不同的终端点&#xff08;endpoints&#xff09;和模式&#xff08;modes&#xff09; 复杂和…

我改了一行公共代码后,同事说要建个没我的小群

点击上方 前端Q&#xff0c;关注公众号 回复加群&#xff0c;加入前端Q技术交流群 嗨&#xff0c;大家好&#xff01;这里是道长王jj~ &#x1f3a9;&#x1f9d9;‍♂️ 今天我想和大家分享一个惨痛的教训&#xff0c;就是当我一意孤行地删掉一个看起来没用的配置文件时&#…

chatgpt赋能python:免费的Python教程:从入门到精通

免费的Python教程&#xff1a;从入门到精通 Python是如今最热门的编程语言之一&#xff0c;在众多编程语言中占据了重要的地位。Python有着简单易学的语法&#xff0c;充足的库支持&#xff0c;高效的执行速度和海量的社区支持&#xff0c;这些使得Python成为最适合初学者的编…

chatgpt赋能python:Python报错Module:从入门到精通

Python报错Module&#xff1a;从入门到精通 在Python编程中&#xff0c;我们经常会遇到各种各样的错误。其中&#xff0c;Module错误是最常见的一种。在这篇文章中&#xff0c;我们将深入探讨Python报错Module的各种原因和解决方法&#xff0c;并希望能够帮助那些遇到这种问题…

chatgpt赋能python:Python词汇大全:从入门到精通

Python词汇大全&#xff1a;从入门到精通 Python作为一门简洁易学的编程语言&#xff0c;已经成为了全球程序员的热门选择。在这篇文章中&#xff0c;我们将介绍Python的词汇大全&#xff0c;包括关键字、数据类型、内建函数、标准库、第三方库等内容&#xff0c;帮助读者更好…

chatgpt赋能python:Python的口头禅:从入门到精通

Python的口头禅&#xff1a;从入门到精通 什么是Python口头禅&#xff1f; Python是一门强大的编程语言&#xff0c;它不仅拥有简洁易读的语法&#xff0c;而且拥有着许多独特的语言特性。其中&#xff0c;Python口头禅是指程序员们在使用Python时最常用的&#xff0c;最经典…

chatgpt赋能python:Python要点:从入门到精通

Python要点&#xff1a;从入门到精通 Python是一门高级编程语言&#xff0c;是一种解释型、面向对象、动态数据类型的语言。它的设计思想是“代码易读易写”&#xff0c;在数据科学、人工智能、自动化测试、Web开发等领域广泛应用。本文将从入门到精通的角度来介绍Python的要点…

chatgpt赋能python:Python构造列表:从入门到精通

Python 构造列表&#xff1a;从入门到精通 Python是一种强大、可扩展、易于学习的编程语言。用Python编写代码的一个重要部分是构建列表&#xff0c;这是Python中最重要的数据结构之一。本文将深入探讨Python列表的构造方法&#xff0c;以帮助您更好地理解它们的概念和用途。 …

基于 ChatGPT 的 helm 入门

1. 写在最前面 公司最近在推业务上云&#xff08;底层为 k8s 管理&#xff09;&#xff0c;平台侧为了简化业务侧部署的复杂度&#xff0c;基于 helm 、chart 等提供了一个发布平台。 发布平台的使用使业务侧在不了解 helm 、chart 等工具的时候&#xff0c;「只要点点」就可…