应用耗流量的测试目前对于移动端的来说已经很普及了。
目前我参考的大量的资料,发现主流的两种思想无非就是根据记载应用耗流量的文件,但是目前这个文件都是记录的总数。然后根据开始时间跟结束时间的差值来计算的。
第一种:
查看当前应用的 UID:adb shell ps | grep “你想测试的应用的包名”
(1)、执行 adb pull /proc/$pid/status ,在 status 文件里面存储的就是 UID。
(2)、执行 adb pull /proc/$UID/tcp/rcv 和 adb pull /proc/uid_stat/$UID/tcp_snd(目前确定在这个目录里面,文件名字是 “tcp_snd” 和 “tcp_rcv”),记得把其中的 $UID 替换成自己应用的 UID,这样子我们就可以拿到请求数据耗费的流量和收到的的流量了。
该种方式的弱点:对应文件记录流量变化不是实时的。对于只需要测试一段时间耗流量总和的可以用下。
第二种:
adb shell cat /proc/net/xt_qtaguid/stats | grep (uid#)
如: adb shell cat /proc/net/xt_qtaguid/stats | grep 10127
48 wlan0 0x0 10127 0 316574 2279 472562 3651 316574 2279 0 0 0 0 472562 3651 0 0 0 0
49 wlan0 0x0 10127 1 6172960 4936 415951 5215 6172960 4936 0 0 0 0 415951 5215 0 0 0 0
50 wlan0 0x3792d5b400000000 10127 0 29678 208 32168 296 29678 208 0 0 0 0 32168 296 0 0 0 0
51 wlan0 0x3792d5b400000000 10127 1 226170 222 25745 265 226170 222 0 0 0 0 25745 265 0 0 0 0
56 wlan0 0xfa1dcc4b00000000 10127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
57 wlan0 0xfa1dcc4b00000000 10127 1 3014885 2127 139857 2117 3014885 2127 0 0 0 0 139857 2117 0 0 0 0
该种方式的优点:相对于第一种来说,算出的流量消耗相对比较及时,但是跟我用 fiddler 抓包计算出的有较大差异。
基于上面两种方法:
我希望能有个更好的更实时更精确的统计,
大概思想:操作应用的时候,用类似 fiddler 对他抓包。然后记录应用跳转页面的时候,代码里面去跟页面映射请求的接口,最后从抓包软件记录的日志文件中分析得出每个接口请求发送跟接受的字节数,最后把这个页面对应的接口请求消耗的字节数加起来就是加载当前页面消耗的流量,
目前存在的问题:
有类似的抓包软件,会存储有相应的日志文件吗?具体在哪里?这些我目前没有找到。希望大家可以一起在这个思想上探讨下。
转载请说明出处!!!