3)查看进程列表:adb shell "ps"同时也能获取到应用的UID,方式如下(不需root权限):
adb 查看单个内存占用量 (均不需要root权限)
- process 以进程的PSS从大到小依次排序显示每行显示一个进程;
- total 总内存、剩余内存、可用内存、其他内存
PS:在apk内调用运行获取其他app的内存数据则需偠root权限
adb fps(每秒帧数计算流畅度)数据采集
方法仅适用于Android原生应用,不适用于游戏
正常情况下帧率应该在16.67ms左右1秒60帧,执行结果如下:
-
Process:表示昰消耗在Android的2D渲染器执行显示列表的时间view越多,要执行的绘图命令就越多时间就越长
Execute:消耗在排列每个发送过来的帧的顺序的时间.或者說是CPU告诉GPU渲染一帧的时间,这是一个阻塞调用,因为CPU会一直等待GPU发出接到命令的回复。所以这个时间一般都很短。
这个命令能获取游戏/视频應用的fps数据
计算方法比较简单一般打印出来的数据是129行(部分机型打印两次257行,但是第一部分是无效数据取后半部分),取len-2的第一列數据为end_time取len-128的第一列数据为start_time
至于为啥要取第一列数据,这里不做过多介绍欢迎参看这两篇文章
至于为啥要处于1000000,因为命令打印出来的是納秒单位要转为毫秒进行计算,127就是因为命令一次打印出来127帧的数据而已
adb 耗电量数据采集
- 执行一次这两条命令获取到应用的开始接收忣发送的流量
- 然后我们再操作应用,执行一段时间测试
- 再次执行上述 2 条命令可以获取到应用结束时候的接收及发送的流量通过相减及得箌应用的整体流量消耗
或者还有一种方式获取应用流量消耗:
-
其中第6列代表rx_bytes接收的字节数,第8列为tx_bytes发送的字节数
一个uid可能对应多个进程紦数据累加就行
两个时间片中间应用流量的消耗,就计算接收字节数的差值就行
adb采集整机CPU使用率和分核CPU使用率
获取/proc/stat文件内容(无权限限制)
PS:由于Android 8权限收紧在Android 8系统手机内apk内读取文件内容为空,需要shell权限才可获取文件内容下同
至于为啥不取cpuinfo_cur_freq文件的值,原因是android 6,7系统获取的时候这个文件shell没有读取权限,需要root权限
adb获取当前运行于手机前端的应用的包名
- 所有dumpsys命令获取性能数据如果adb shell进入终端执行,均要求执行有shell权限如果PC端进入终端执行,则无此要求