粘结剂,美人天下片尾曲,夏世莲
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命令的接口,可以在此基础上扩展。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Android Manifest中meta-data扩展元素数据的配置与获取方式
Android实现获取meta-data和build.gradle的值
Android获取清单文件中的meta-data,解决碰到数值为null的问题
解决webview 第二次调用loadUrl页面不刷新的问题
解决Android WebView拦截url,视频播放加载失败的问题
Android webview加载https链接错误或无响应的解决
网友评论