adb 常用命令
查看进程列表:adb shell "ps",能获取应用的UID,方法如下(不需root权限):u0_a开头为Android应用进程,应用UID从10000开始到19999,可在Process.java中查看(FIRST_APPLICATION_UID和LAST_APPLICATION_UID),u0_a后的数字即应用UID值减去FIRST_APPLICATION_UID,如截图应用进程是u0_a155,按照规则,其UID为155 + FIRST_APPLICATION_UID = 10155。
内存说明
VSS - 虚拟耗用内存(包含共享库占用);RSS - 实际使用物理内存(包含共享库占用);PSS - 实际使用的物理内存(比例分配共享库占用);USS - 进程独自占用的物理内存(不包含共享库占用);内存占用规律:VSS >= RSS >= PSS >= USS。
adb 查看单个内存占用量(均无需root权限)
使用 adb shell "dumpsys meminfo -s " 命令WhatsApp网页版,输出结果分四部分,重点取应用的TOTAL内存占用大小(KB)。
PS:在apk内获取其他app内存数据需root权限。
adb fps数据采集
使用 adb shell dumpsys gfxinfo ,正常情况下帧率应为16.67msWhatsApp网页版,1秒60帧,执行结果如下。
详细计算方法如下:
命令: adb shell dumpsys SurfaceFlinger --latency LayerNameWhatsApp网页版,获取游戏/视频应用的fps数据。
LayerName根据系统不同获取方法不同,例如:Android 6系统直接为SurfaceView;Android 7系统通过 dumpsys window windows | grep mSurface | grep SurfaceView 获取,Android 8系统通过 dumpsys SurfaceFlinger | grep android包名。
执行命令结果如下:
计算方法:一般打印数据为129行,取len-2的第一列数据为end_time,取len-128的第一列数据为start_time,fps = 127/((end_time - start_time) / 1000000.0)。
adb CPU占用率数据采集
有两种方法:1)adb shell "top -n 5 | grep ",第三列为实时监控的CPU占用率(-n指定执行次数,不需root权限),top命令执行需2到3s,可使用busybox top提升效率。2)adb shell "dumpsys cpuinfo | grep ",两种方法的区别在于,top持续监控,而dumpsys实时CPU占用率数据。
adb 耗电量数据采集
使用 adb shell "dumpsys batterystats < package | pid>"(Android 5.0后引入),获取单个应用的耗电量信息。命令: adb shell "dumpsys battery",信息解读包括AC powered、USB powered、status、level、voltage、current now、temperature和technology。
adb 采集流量数据
使用 adb shell "dumpsys< package | pid> | grep UID"(通过ps命令获取app的UID),获取接收流量信息(设备重启后清零)和发送流量信息(重启后清零)。
adb 采集CPU温度
使用 cat /sys/class/thermal/thermal_zone*/type 判断类型,然后通过 cat /sys/class/thermal/thermal_zone*/temp 获取CPU温度。
adb 采集电池温度
使用 dumpsys battery | grep temperature,单位为0.1摄氏度。
adb 采集整机CPU使用率和分核CPU使用率
获取 /proc/stat 文件内容,计算总cpu时间片和忙碌时间,然后计算cpu使用率。
adb 采集各核CPU频率
读取 /sys/devices/system/cpu/cpuX/cpufreq/scaling_cur_freq 文件的值,X为核号,需要判断文件是否存在。
adb 获取当前运行于手机前端的应用的包名
使用 dumpsys window windows | grep "mCurrentFocus",执行结果提取出应用包名。
adb 采集GPU占用率
直接apk内读取文件获取GPU使用率,支持高通GPU芯片(Qualcomm Adreno系列),获取GPU使用率、工作频率、最大和最小工作频率、可用频率、可用工作模式和当前工作模式。
所有dumpsys命令获取性能数据时,adb shell进入终端执行需shell权限,PC端执行则无需此要求。