细说Android流量

Hello大家好,我是拉法!

之前给大家分享过solox的流量指标是如何计算的,但是呢这只是冰山一角,而这篇文章给大家详细的介绍一下Android流量的各种计算方法。

solox源码:https://github.com/smart-test-ti/SoloX

更多精彩文章,请关注拉法的wx公众号“智测PLUS”

一、/proc/pid/net/dev

adb命令:adb shell cat /proc/pid/net/dev 得到

Inter-|   Receive                                                |  Transmit
face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
rmnet4:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
rmnet_tun03:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
rmnet_r_ims01:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
rmnet_tun02:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
dummy0:       0       0    0    0    0     0          0         0     1610      23    0    0    0     0       0          0
rmnet2:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
rmnet_tun11:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
rmnet_ims00:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
rmnet_tun10:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
rmnet_emc0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
rmnet_tun13:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
rmnet0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
rmnet_tun00:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
rmnet_tun04:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
rmnet5:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
wlan0: 1241518561  840807    0    0    0     0          0         7  7225770   73525    0    6    0     0       0          0
rmnet_r_ims00:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
rmnet3:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
rmnet_tun01:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
sit0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
rmnet_tun14:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
ip_vti0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
ip6tnl0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
rmnet1:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
ip6_vti0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
rmnet_r_ims11:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
rmnet_r_ims10:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
rmnet6:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
rmnet_tun12:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
lo: 3796620     292    0    0    0     0          0         0  3796620     292    0    0    0     0       0          0
rmnet_ims10:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0

其中wlan0表示wifi流量,rmnet0表示sim卡流量(有些机型是用rmnet_data0\rmnet_ipa0)

注意:这种方法经过测试等到的是整机的流量,不是app的。很奇怪这个文件需要指定pid。

二、/sys/class/net

/sys/class/net中实际给出了实际设备统计数据的软链:

找到相关类别的目录,在其子目录statistics下游可以通过rx_bytestx_bytes查看收发流量:

注意:这种方法经过测试等到的是整机的流量,不是app的

三、/proc/uid_stat/{uid}

和前两种方式不同,这种方式可以获取不同uid的网络流量数据。

获取uid的方式有多种,可以使用下面这种

adb shell dumpsys package

结果中在 Package: 段中,userId= 后的即为应用的UID 

获取到UID后,可以进入/proc/uid_stat/{uid}目录,通过tcp_rcv 和 tcp_snd获取对应流量信息。

存在的问题是:

只针对TCP协议网络的消耗统计

高版本机型上不存在该路径,在Android 4.3.1 及之后的版本中,该路径都不存在了

四、/proc/net/xt_qtaguid/stats

UID的获取和上面相同

adb shell cat /proc/net/xt_qtaguid/stats | findstr {uid}

其中第6列和第8列分别是rx_bytes和tx_bytes包含tcp、udp等所有网络流量统计

由于一个uid可以对应多个进程,所以这几行流量累加求和就是APP的流量消耗。

目前发现这种方式在高版本的机型中也不适用了,该文件不存在。

最后放一个图给大家总结一下上面的几种方法的区别

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Oracle中,PL/SQL是一种编程语言,允许开发人员编写存储过程、函数和触发器等程序对象。这些程序对象可以使用变量存储数据,其中包括全局变量和局部变量。 全局变量是定义在包中的变量,可以在包中的任何过程或函数中使用。在包中定义变量的语法如下: ``` CREATE OR REPLACE PACKAGE package_name AS variable_name datatype; ... END package_name; ``` 在这个包中,变量名为`variable_name`,数据类型为`datatype`。这个变量可以在这个包中的任何过程或函数中使用。 局部变量是在过程或函数中定义的变量,它们的作用域只在这个过程或函数中。在过程或函数中定义变量的语法如下: ``` CREATE OR REPLACE PROCEDURE procedure_name AS variable_name datatype; ... BEGIN ... END procedure_name; ``` 在这个过程或函数中,变量名为`variable_name`,数据类型为`datatype`。这个变量只能在这个过程或函数中使用,不能在其他过程或函数中使用。 全局变量和局部变量都可以存储不同类型的数据,例如数字、字符、日期等。在使用变量之前,需要先声明变量的类型和名称。在程序执行过程中,可以对变量进行赋值、修改等操作。 需要注意的是,在使用全局变量时,需要注意多个程序对象可能会同时访问同一个全局变量,因此需要考虑并发访问的问题。在使用局部变量时,需要注意变量的作用域和生命周期,确保变量只在需要的时候才会分配内存空间,并在不需要时及时释放内存空间,以避免资源的浪费。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值