Android CPU耗电量测试

Android CPU耗电量测试

在测试Android app时,不仅仅要关注app的功能,也好关注app的性能指标,cpu、内存、流量、电量等。简单介绍下电量测试中的cpu耗电。

影响耗电的因素

  • CPU
  • Screen
  • Network (3G/wifi)
  • sensor & gps
  • WakeLock

电量测试方法

  1. 安装电池管理的软件,管家、卫士一类的软件。
  2. 自己读取Android的内核日志,电量变化广播等。
  3. 物理设备,安培轮等

这里主要介绍读取内核文件,计算出cpu的电量消耗。

步骤主要如下:

  1. 抓取指定app占用的cpu时间
  2. 获取cpu在各个频率下的运行时间
  3. 根据不同频率下的不同耗电功率,计算出总的耗电消耗。

POWER_PROFILE.XML

每个Android设备都存在这样的一个文件,这个文件定义了各个硬件的功率。不同的手机,内容不同。我的如下(单位mAh,意思是一个小时,能耗电多少mAh):

    <?xml version="1.0" encoding="utf-8"?>     <device name="Android">         <item name="none">0</item>         <item name="screen.on">71</item>         <item name="bluetooth.active">17</item>         <item name="bluetooth.on">0.3</item>         <item name="screen.full">380</item>         <item name="wifi.on">0.3</item>         <item name="wifi.active">96</item>         <item name="wifi.scan">70</item>         <item name="dsp.audio">44</item>         <item name="dsp.video">280</item>         <item name="radio.active">250</item>         <item name="radio.scanning">82</item>         <item name="gps.on">1</item>         <array name="radio.on">             <value>3.4</value>             <value>3.4</value>         </array>         <array name="cpu.speeds">             <value>12000000</value>             <value>10000000</value>             <value>800000</value>             <value>500000</value>             <value>200000</value>         </array>         <item name="cpu.idle">4</item>             <array name="cpu.active">             <value>577</value>             <value>408</value>             <value>249</value>             <value>148</value>             <value>55</value>         </array>         <item name="battery.capacity">2100</item>     </device> 

如何得到power_profile.xml文件

该文件存在手机的/system/framework/framework-res.apk包里,需要使用apk-tool对apk进行反编译,反编译后,在$output/res/xml文件夹中。

获取APP执行时间

  1. 获取pid, adb shell ps | grep {appName}或者adb shell top -n 1 | grep ${appName}
  2. 获取pid执行时间,cat /proc/${pid}/stat, 这个文件中的第14列到17列相加得到的就是从开机到此刻,app一共占用多少cpu时间(设这里值为T1),这里的单位是jiffies, 这个单位的意思是cpu的运算次数,如果cpu的频率为1G,那么1 jiffies = 1/1G 秒。
  3. 不断去cat /proc/${pid}/stat,获取cpu占用时间,减去第二步的T1,就是这段时间app的cpu占用时间。
  4. 获取cpu在不同频率下的工作几率。android的cpu会在不同主频下工作,/sys/devices/system/cpu/cpu0/cpufreq/stats/time_instate
    放了cpu在各个频段的占用时间,注意是整个系统占用时间,根据这个几率,计算出cpu的每个频率下的工作时间,然后再乘以power_profile.xml中定义的单位耗电,累加得到cpu消耗。
  5. http://www.yeetrack.com/?p=1045
时间: 2024-11-11 02:02:40

Android CPU耗电量测试的相关文章

APP耗电量测试

现象 APP耗电,导致电池续航能力不佳,如下图,在小米MIX2和iPhone X机型上后台静默一小时各应用的耗电排行: 基本概念 相对于PC来说,移动设备的电池电量是非常有限的,保持持久的续航能力尤为重要.另外,Android的很多特性都比较耗电(如屏幕.GPS.sensor传感器.唤醒机制.CPU.连网等的使用),我们必须要慎重检查APP的电量使用,以免导致用户手机耗电发热,带来不良体验. 场景设计   主要的耗电场景有: cpu:复杂的运算逻辑.死循环等会直接导致CPU负载过高,会导致耗电:

[Android] 深入浅出Android App耗电量统计

reference to : http://www.cnblogs.com/hyddd/p/4402621.html 前言 在Android统计App耗电量比较麻烦,直至Android 4.4,它仍没公开“电量统计”API或文档……额,是的,仅没有公开,并不是没有.平时在手机“设置- 电量”看到的数据 就是系统调用内部API的统计结果. 基础概念 1. 手机由众多“部件”组成,所谓“部件”是指:CPU,WIFI,GPS....所以,Android App消耗总电量为 App运行过程中,涉及各部件

android开发及测试工具

1.Buckfacebook开源的Android编译工具,效率是ant的两倍.主要优点在于:(1) 加快编译速度,通过并行利用多核cpu和跟踪不变资源减少增量编译时间实现(2) 可以在编译系统中生成编译规则而无须另外的系统生成编译规则文件(3) 编译同时可生成单元测试结果(4) 既可用于IDE编译也可用于持续集成编译(5) facebook持续优化中项目地址:https://github.com/facebook/buck 2.Android Maven PluginAndroid Maven插

Android流畅度测试

Android流畅度测试 测试方法一:系统自带-开发者模式 测试方法二:FPS Meter测试安卓帧数 H5页面加载速度:window.performance.timing 测试方法一:系统自带-开发者模式 实际上,为了方便开发者测试,安卓本身就内置了流畅度检测的功能.不过,这需要我们开启隐藏的开发者选项.如果你在用原生系统,那么开启开发者选项的方法很简单,进入到设置菜单“关于手机”页面,点击数次“版本号”,即可开启开发者选项.如果用的是其他ROM,方法也许有所不同,比如说魅族的Flyme开启开

Android性能专项测试测试点指导(二)

Android性能专项测试测试点指导(一) 上一篇文章通过导图的方式介绍了性能专项的几个测试点,那么今天将会详细阐述下. 内存: 内存泄漏: 老生常谈的最多就是这货,这家伙的测试方法其实是最简单也是最难的,为什么简单,因为你要定位到路径,只需要重复操作即可,比如你怀疑播放器泄漏了,重复进入退出N次,那么就可以确定是播放器出问题了,可以提单了:说难,你需要进一步分析到底是哪里泄漏了,通过MAT工具去对比,去分析定位到类,那就需要精力和时间了,通常还吃力不讨好-最近,出现了这样一个工具LeakCan

深入浅出Android App耗电量统计

前言 在Android统计App耗电量比较麻烦,直至Android 4.4,它仍没公开“电量统计”API或文档……额,是的,仅没有公开,并不是没有.平时在手机“设置- 电量”看到的数据 就是系统调用内部API的统计结果. 基础概念 1. 手机由众多“部件”组成,所谓“部件”是指:CPU,WIFI,GPS....所以,Android App消耗总电量为 App运行过程中,涉及各部件的消耗电量的总和. 2. 假设运行App导致CPU运行,时间:t,CPU单位时间消耗电量:w,则App的CPU耗电量为

Android应用耗电量统计,无需USB连接

Android应用耗电量统计一直是一个很头疼的问题,手工统计耗时太长,自动化统计又不是非常精准(执行自动化代码需要通过USB连接,而USB又会充电,这就造成统计数据不准).后来从前辈那里得知可以通过adb connect来实现无线连接,下面就来说说方法. 1.首先找到一台已经root的手机 2.使手机与PC处于同一个网段 3.下载安装Wireless ADB 4.打开Wireless ADB,勾选Wireless ADB,设置端口(默认5555,被占用时设置) 5.打开pc的CMD窗口,输入ad

ffmpeg2.2在ubuntu下使用NDK编译——并在android工程下测试使用

作者:wainiwann 出处:http://www.cnblogs.com/wainiwann/ 本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利. 摘要:本文主要介绍将FFmpeg音视频编解码库移植到Android平台上的编译和基本测试过程. 环境准备: Ubuntu12.04 TLS android-ndk-r9d-linux-x86_64.tar.bz2 ffmpeg2.2 --------------------

Android Monkey压力测试

一.Monkey简介: Monkey是Android中的一个命令行工具,可以运行在模拟器里或者现实设备中,向系统发送伪随机的用户事件流(点击.滑动.Application切换.横竖屏.应用关闭)实现对正在开发的应用程序进行压力测试.monkey测试是一种为了测试软件的稳定性,健壮性的快速有效的方法.只针对Activity做测试,不能对Service做测试. 简单的理解: Monkey 是一个 Android 自动化测试小工具.主要用于Android 的压力测试, 主要目的就是为了测试app 是否