通用技术 【求教】anroid10 系统如何获取被测 app 的流量

chenyouan · 2021年09月10日 · 最后由 陈恒捷 回复于 2022年04月21日 · 7517 次阅读

目前遇到一个问题就是 android10 系统已无法通过/proc/net/xt_qtaguid/stats 来获取被测 app 的流量,会提示没有这个文件,我查看了下文档和也看了阿里的 mobileperf,发现获取的流量,都是关于整机的,非被测试 app。我也去专门去了解通过 adb shell dumpsys netstats detail,然后查找 userid,来查看流量,发现也是不行的。不知道有哪个大佬,知道通过 adb 方式有什么方法可以获取被测试 app 流量,目前比较疑惑的腾讯的流量是通过什么方式获取?

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 12 条回复 时间 点赞

试试 根据 pid 来读取,/proc/pid/net/dev | grep wlan0:

对 哲豪 回复

两个都是一样的,区别不大,也是本以为带了个 pid 应该是 app,结果比对以后,一样

对 chenyouan 回复

可以看下我发 gif,取到的是被测 app 的流量,软件商店的下载流量并未被算进去

对 哲豪 回复

右边的东西是啥呀?

对 干饭狂人 回复

手机同屏页面啊

对 哲豪 回复

你 app 后台运行,看下流量。另外你可以看下/proc/net/dev ,另外也打开/proc/pid/net/dev,看下 wlan0 有木有区别。我两者对比,流量区别不大,好尴尬

对 chenyouan 回复

可以判断前台是否是被测 app 在获取,现在 perfdog 收费了,没法进行验证对比

对 哲豪 回复

“/proc/[pid]/net/dev” 和 “/proc/net/dev” 数据是一样的,这个文件记录的是网卡流量,不区分进程的,容易被 pid 这个东西迷惑,很多人估计都没发现这个问题。另外我这边用 perfdog 测过安卓 10 的手机,它是可以监控进程流量的,新用户有 30min 使用时间,每次监控不超过 1min 中断它是不扣体验时长的,你可以用来对比一下

有解决方案了吗?android 10 开始抛弃 xt_qtaguid, 改成了 bpf,目前我发现通过 adb 获取流量数据的有 3 种方法:

1.读取/proc/net/dev:该方式系统版本兼容性强,但是只能获取网卡全局的流量数据,无法分离进程流量数据
2.读取/proc/net/xt_qtaguid/stats: 该方式可以获取进程流量数据,但是只能在 Android 9.0 及以下的系统中使用
3.读取 sys/fs/bpf/traffic_uid_stats_map: 该方式可以在 Android 10 及以上的系统中获取进程流量数据,但是需要 root 权限

但性能狗确实是可以监控非 root 的安卓 10 手机的进程流量,好奇它的方案是什么。。。

对 lshunger 回复

请问,有找到合适的 android 10 以上监控 app 单独流量的方案了吗?

google 查了下,有个说的比较全的文章,但里面对应 android 10 以上的方案要不得 root ,要不得用 android 应用通过 android api 获取,没有直接通过 adb 获取的方式:https://android.stackexchange.com/questions/203868/how-to-view-network-traffic-requested-by-a-specific-app/204022#204022

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册。