Android流量监控统计的方法
方法如下表:
方法 | 查看文件路径 | 是否区分网络接口 | 是否区分app | 说明 | 适用厂商 |
---|---|---|---|---|---|
A | adb shell cat /proc/net/dev | 是 | 否 | 区分本地流量、无线网络流量、WiFi流量; 统计整个系统的,不区分应用; | vivo ok huawei ok oppo ok xiaomi ok |
B | adb shell cat /proc/{pid}/net/dev | 是 | 否 | 区分本地流量、无线网络流量、WiFi流; 统计整个系统的,不区分应用,跟A方法差不多; 参数{pid}需替换成具体应用的pid; | vivo ok huawei ok oppo ok xiaomi ok |
C | adb shell cat /sys/class/net/{wlan}/statistics/rx_bytes adb shell cat /sys/class/net/{wlan0}/statistics/tx_bytes | 是 | 否 | 区分本地流量、无线网络流量、WiFi流量; 统计整个系统的,不区分应用; 需要root权限; wlan 表示网卡参数 wlan0 表示第一网卡1 wlan1 表示第二网卡2…… | vivo ok huawei ok oppo ok xiaomi ok |
D | adb shell cat /proc/uid_stat/{uid}/tcp_rcv adb shell cat /proc/uid_stat/{uid}/tcp_snd | 否 | 是 | 根据uid区分app流量 统计该app的所有流量; 需要root权限,并且不是每个产商都配置了/proc/uid_stat 这个文件夹; 参数{uid}需替换成具体应用的uid | vivo 不适用 huawei 不适用 oppo 不适用 xiaomi 不适用 使用的是Android高版本,低版本不知道有没有 |
E | adb shell cat /proc/net/xt_qtaguid/stats | 是 | 是 | 根据网卡区分app、线程流量; 不是每个产商都配置有这个文件; | vivo 不适用 huawei 不适用 oppo 不适用 xiaomi ok |
结论
- 要求每那么严格的情况下,可以使用A方法测试流量
- 要比较准确的流量数据,可以用小米手机、E方法测试
相关知识补充
应用包名获取:adb shell dumpsys window | findstr
pid 获取
打开app,通过命令adb shell dumpsys window |findstr mCurrentFocus 获取,图中的红色框就是该应用包名:
pid 获取
打开app,通过命令 adb shell ps 查看对应包名的pid
可以使用管道符进行过滤:adb shell ps |findst {包名}
uid 获取
1、通过包名获取:adb shell dumpsys package {包名} | findstr uid=
2、通过pid获取:adb shell cat /proc/{pid}/status
各方法获取结果示例
A方法: adb shell cat /proc/net/dev
B方法:adb shell cat /proc/{pid}/net/dev
C方法
无
D方法
无