耗电量是衡量APP性能的一个重要参数,也和用户使用体验紧密相关;在这里记录测试APP耗电量数据的测试方法;
耗电量测试方法有:
1、硬件测试:借助功耗仪PowerMonitor、直流稳压电源Agilent 66319D等工具;(后面单独写一篇记录总结)
2、软件测试:PowerStat2.0、GT、BatteryHistorian;
这里先记录使用BatteryHistorian测试耗电量的方法;
1、获取bugreport
获取到bugreport后上传到BatteryHistorian进行分析;
需要注意的是,统计数据之前需要使用下面的命令将以前的累积数据清空:
adb shell dumpsys batterystats --reset
取出保存耗电量数据:
adb bugreport D:\bugreport\bugreport
2、使用BatteryHistorian分析bugreport
以下是BatteryHistorian的两种安装方式:
这里使用了源码编译安装BatteryHistorian的方法;
(1)启动BatteryHistorian--Git Bash输入命令启动
(2)浏览器打开 http://localhost:9999/,选择bugreport后submit:
(3)查看结果:
3、数据分析
待补充
参数 | 说明 |
CPU runing | cpu运行的状态 |
Kernel only uptime | Kernel单独运行时间 |
Userspace wakelock | 用户空间申请的锁 |
Screen | 屏幕是否点亮 |
Battery level | 电池当前电量 |
Temperature | 电池温度 |
Top app | 当前在内存中的应用,按内存占用率排序 |
Activity Manager Proc | 活跃的用户进程 |
Crashes(logcat) | 某个时间点出现crash的应用 |
Doze | 是否进入doze模式 Device |
active | 和Doze相反 |
JobScheduler | 异步作业调度 |
SyncManager | 同步操作 |
Temp White List | 电量优化白名单 |
Phone call | 是否打电话 |
GPS | 是否使用GPS |
Network connectivity | 网络连接状态(wifi、mobile是否连接) |
Mobile signal strength | 移动信号强度(great\good\moderate\poor) |
Wifi scan | 是否在扫描wifi信号 |
Wifi supplicant | 是否有wifi请求 |
Wifi radio | 是否正在通过wifi传输数据 |
Wifi signal strength | wifi信号强度 |
Wifi running | wifi组件是否在工作(未传输数据) |
Wifi on | 同上 |
Camera | 相机是否在工作 |
Audio | 音频子系统? |
Foreground process | 前台进程 |
Package install | 是否在进行包安装 |
Package active | 包管理在工作 |
Plugged | 连接usb或者充电 |
Charging on | 在充电 |
Logcat misc | 是否在导出日志 |
4、耗电优化
待补充
改善软件耗电情况,从以下两方面入手:
1、手机系统层面-----应用软件运行的载体;Google和Rom厂商,在系统层面做一些策略,在保证应用的用户体验前提下,尽量限制应用的不必要耗电;
2、APP应用软件层面-----保证用户必要体验的前提下,尽可能减少不必要的操作;
参考书籍《移动APP性能评测与优化》