Android如何跟踪每个应用的数据使用情况?

时间:2015-07-16 13:25:56

标签: android network-programming iptables netfilter

Android可以跟踪从/向应用程序发送和接收字节的方式。
我想知道这些数据是如何计算的。例如,当我运行本机应用程序,打开TCP套接字,发送和接收数据时,会记录这些数据。
我知道它与xt_qtaguid模块有关,它为每个UID标记套接字。

1 个答案:

答案 0 :(得分:2)

快速追捕:

快速查看软件包/应用程序/设置(http://androidxref.com/5.1.1_r6/xref/packages/apps/Settings/src/com/android/settings/DataUsageSummary.java#296),它似乎依赖于

NetworkStatsService: http://androidxref.com/5.1.1_r6/xref/frameworks/base/services/core/java/com/android/server/net/NetworkStatsService.java#906

这似乎归结为阅读:

mStatsXtIfaceAll = new File(procRoot, "net/xt_qtaguid/iface_stat_all");
mStatsXtIfaceFmt = new File(procRoot, "net/xt_qtaguid/iface_stat_fmt");
mStatsXtUid = new File(procRoot, "net/xt_qtaguid/stats");

"净/ xt_qtaguid /统计"似乎包含应用级别的信息。

- 在此处跳过几个步骤,但在此文件仅打开以供阅读之后,它由xt_qtaguid内核模块编写。

代码: https://android.googlesource.com/kernel/common/+/f0cfc3cc16a15c41107e83f49b61fe2e5a5303be/net/netfilter/xt_qtaguid.c

内核不是我的专长,而且我们不在" Android"现在系统的一部分,也许这个问题属于Linux内核问题,而不是Android问题? :)