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

chenyouan · September 10, 2021 · Last by 陈恒捷 replied at April 21, 2022 · 2745 hits

目前遇到一个问题就是 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

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up