大家好,又见面了,我是你们的朋友全栈君。
3.如何在Android系统中集成?
以上通过adb shell命令行在Android设备上将方案调通之后,接下来考虑如何集成在Android系统中。作为一个整体解决方案,需要至少解决两部分功能:
(1)网络访问规则。包括规则定义、存储、对外接口、对内转化成Iptables命令。
(2)Iptables命令执行。
第一部分比较简单,在此不详述。主要看第二部分。
对于某一个垂直功能,Android经典的架构一般是由Java层的服务和接口、C++层的守护进程、Linux内核这由上到下的三层架构。网络管理架构也是如此。
Java层的服务包括NetworkManagementService/ConnectivityService/NetworkStatsService等,可以以AIDL对外提供接口。C++层的守护进程是Netd。
可以在NetworkManagementService和Netd扩充接口实现执行Iptables命令:
(1)在INetworkManagementService.aidl中定义扩充接口。
(2)在NetworkManagementService.java中实现接口。
NetworkManagementService通过一个NativeDaemonConnector类的成员变量,与Netd通信(通过Socket),可以通过这个成员变量向Netd发Iptables命令。新增加一种命令类型专门处理Iptables命令。
(3)在Netd中实现对(2)中下发的命令的处理。
CommandListener在Netd中负责侦听Java层命令。NetdConstants中已经有执行Iptables命令的接口,可以在此基础上扩展。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/163442.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...