Android便携式WLAN热点分析
Platform: RK3368
OS: Android 6.0
Kernel: 3.10.0
文章目录
分析Android开启WLAN热点的路由策略和防火墙
在Android系统中,开启便携式WLAN热点(也称为Wi-Fi热点)涉及多个组件和层之间的交互。
便携式WLAN热点开启流程
-
应用层请求:
- 用户通过系统设置或其他应用请求开启Wi-Fi热点。
- 应用通过
WifiManager
的setWifiApEnabled()
方法发送请求。
-
Framework层处理:
WifiManager
接收请求后,调用WifiServiceImpl
的setWifiApEnabled()
方法。WifiServiceImpl
进一步将请求传递给WifiController
。WifiController
通过WifiStateMachine
(状态机)来处理热点开启的逻辑。WifiStateMachine
决定需要进行的操作,包括配置热点参数(SSID、密码等)并调用NetworkManagementService
来执行具体的网络操作。
-
与Native层的交互:
NetworkManagementService
通过NativeDaemonConnector
与本地守护进程netd
进行通信。- NativeDaemonConnector通过UNIX socket(例如
/dev/socket/netd
)向netd
发送命令和数据。 netd
接收命令后,解析并执行相应的操作。
-
配置文件生成:
netd
将接收到的热点配置(SSID、密码、加密方式等)写入到/data/misc/wifi/hostapd.conf
文件中。- 这个配置文件是hostapd服务启动时用于配置Wi-Fi热点的关键文件。
-
启动hostapd服务:
netd
通过执行/system/bin/hostapd
命令来启动hostapd守护进程。- hostapd是一个开源的、用户空间的IEEE 802.11接入点(AP)和认证服务器。
- hostapd读取
/data/misc/wifi/hostapd.conf
配置文件,并根据其中的配置来启动和管理Wi-Fi热点。
-
状态更新和反馈:
- 一旦hostapd成功启动并配置好热点,
netd
会通过socket将状态更新回传给Framework层。 - Framework层更新其内部状态,并通过系统通知或其他方式告知用户热点已成功开启。
- 一旦hostapd成功启动并配置好热点,