须知少年凌云志,曾许人间第一流。这篇文章主要讲述Android CPU耗电量测试相关的知识,希望能为你提供帮助。
android CPU耗电量测试在测试Android app时,不仅仅要关注app的功能,也好关注app的性能指标,cpu、内存、流量、电量等。简单介绍下电量测试中的cpu耗电。
影响耗电的因素
- CPU
- Screen
- Network (3G/wifi)
- sensor & gps
- WakeLock
- …
电量测试方法
- 安装电池管理的软件,管家、卫士一类的软件。
- 自己读取Android的内核日志,电量变化广播等。
- 物理设备,安培轮等
步骤主要如下:
- 抓取指定app占用的cpu时间
- 获取cpu在各个频率下的运行时间
- 根据不同频率下的不同耗电功率,计算出总的耗电消耗。
每个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执行时间
- 获取pid,
adb shell ps | grep {appName}
或者adb shell top -n 1 | grep ${appName}
- 获取pid执行时间,
cat /proc/${pid}/stat
, 这个文件中的第14列到17列相加得到的就是从开机到此刻,app一共占用多少cpu时间(设这里值为T1),这里的单位是jiffies, 这个单位的意思是cpu的运算次数,如果cpu的频率为1G,那么1 jiffies = 1/1G 秒。 - 不断去
cat /proc/${pid}/stat
,获取cpu占用时间,减去第二步的T1,就是这段时间app的cpu占用时间。 - 获取cpu在不同频率下的工作几率。android的cpu会在不同主频下工作,/sys/devices/system/cpu/cpu0/cpufreq/stats/time_instate
放了cpu在各个频段的占用时间,注意是整个系统占用时间,根据这个几率,计算出cpu的每个频率下的工作时间,然后再乘以power_profile.xml中定义的单位耗电,累加得到cpu消耗。 - http://www.yeetrack.com/?p=1045
推荐阅读
- 测试驱动android
- Android基础Service全解析----看不见的Activity
- Android 捕获 crash
- Mac下Android studio 之NDK配置教程
- Android逆向之旅---破解&quot;穿靴子的猫&quot;游戏的收费功能
- Android利用RecognizerIntent识别语音并简单实现打电话动作
- Hbuilder开发app实战-识岁03-文件上传
- Android清单文件具体解释 ---- 应用程序权限声明
- 使用Android Studio 哪些文件可以直接被版本控制软件忽略