源码位置:packages/modules/Connectivity/Tethering/src/com/android/networkstack/tethering/核心类:Tethering.java、TetheringService.java、TetherMainSM、UpstreamNetworkMonitor.java、BpfCoordinator.java、OffloadController.java、IPv6TetheringCoordinator.java、EntitlementManager.java1. 模块概览Tethering(网络共享)模块是 Android 的网关功能核心,使设备可以充当 IP 路由器,通过 USB、WiFi 热点、蓝牙、以太网等下游接口向其他设备共享互联网连接。Android 16 中,Tethering 作为ConnectivityMainline 模块的一部分,可通过 Google Play System Update 独立升级。1.1 架构全景图Downstream InterfacesHAL / HardwareKernel / BPFnetd (Native Daemon)Tethering Module (Mainline)Framework (System Server)App LayerSettings / 其他 AppTetheringManagerSystem ServiceTetheringServiceService EntryTetheringConnectorBinder StubTetheringCore LogicTetherMainSMMain State MachineIpServerDownstream IP ServerTetheringConfigurationConfigurationUpstreamNetworkMonitorUpstream SelectionOffloadControllerHW OffloadBpfCoordinatorBPF Traffic ControlIPv6TetheringCoordinatorIPv6 Prefix DelegationEntitlementManagerProvisioning CheckConnectedClientsTrackerClient TrackingnetdNAT / DNS / ForwardingBPF Mapstether4/tether6/stats/limit/devConntrackConnection TrackingOffload HALWiFi/Modem Hardware OffloadUSB (RNDIS/NCM)WiFi HotspotBluetooth PANEthernetTethermainSM1.2 支持的下游类型类型常量说明IP范围USB (RNDIS)TETHERING_USBUSB RNDIS 网络共享192.168.42.xUSB (NCM)TETHERING_NCMUSB NCM 网络共享192.168.42.xWiFiTETHERING_WIFIWiFi 热点192.168.43.x蓝牙TETHERING_BLUETOOTH蓝牙 PAN 共享192.168.44.x以太网TETHERING_ETHERNET有线网共享动态分配WiFi P2PTETHERING_WIFI_P2PWiFi Direct 共享192.168.49.xWigigTETHERING_WIGIG60GHz WiGig(Android S+ 废弃)虚拟TETHERING_VIRTUALAVF 虚拟机共享动态2. 核心类与源码锚点[Tethering.java](file:///d:/Resource/Android%2016/android-16/packages/modules/Connectivity/Tethering/src/com/android/networkstack/tethering/Tethering.java):核心业务逻辑(超过2500行),类注释:“This class holds much of the business logic to allow Android devices to act as IP gateways via USB, BT, and WiFi interfaces.”[TetheringService.java](file:///d:/Resource/Android%2016/android-16/packages/modules/Connectivity/Tethering/src/com/android/networkstack/tethering/TetheringService.java):Android Service 入口,通过ITetheringConnector.Stub暴露 Binder 接口[UpstreamNetworkMonitor.java](file:///d:/Resource/Android%2016/android-16/packages/modules/Connectivity/Tethering/src/com/android/networkstack/tethering/UpstreamNetworkMonitor.java):上游网络监控,管理NetworkCallback注册和上游选择逻辑[BpfCoordinator.java](file:///d:/Resource/Android%2016/android-16/packages/modules/Connectivity/Tethering/src/com/android/networkstack/tethering/BpfCoordinator.java):BPF 协调器,通过 BPF maps 管理转发规则、流量统计和配额[OffloadController.java](file:///d:/Resource/Android%2016/android-16/packages/modules/Connectivity/Tethering/src/com/android/networkstack/tethering/OffloadController.java):硬件卸载控制器,与 WiFi/Modem 卸载 HAL 交互[OffloadHardwareInterface.java](file:///d:/Resource/Android%2016/android-16/packages/modules/Connectivity/Tethering/src/com/android/networkstack/tethering/OffloadHardwareInterface.java):硬件卸载的抽象接口,支持 HIDL 1.0/1.1 和 AIDL 三种 HAL 版本[IPv6TetheringCoordinator.java](file:///d:/Resource/Android%2016/android-16/packages/modules/Connectivity/Tethering/src/com/android/networkstack/tethering/IPv6TetheringCoordinator.java):IPv6 共享协调器,管理 IPv6 前缀分配[EntitlementManager.java](file:///d:/Resource/Android%2016/android-16/packages/modules/Connectivity/Tethering/src/com/android/networkstack/tethering/EntitlementManager.java):运营商授权检查(provisioning),支持 UI 和静默两种模式[TetheringConfiguration.java](file:///d:/Resource/Android%2016/android-16/packages/modules/Connectivity/Tethering/src/com/android/networkstack/tethering/TetheringConfiguration.java):配置管理,包括 upstream auto-selection、DUN requirement、DHCP ranges[RequestTracker.java](file:///d:/Resource/Android%2016/android-16/packages/modules/Connectivity/Tethering/src/com/android/networkstack/tethering/RequestTracker.java):请求追踪器(Android 16 新增),管理 TetheringRequest 的 pending/serving 状态[ConnectedClientsTracker.java](file:///d:/Resource/Android%2016/android-16/packages/modules/Connectivity/Tethering/src/com/android/networkstack/tethering/ConnectedClientsTracker.java):跟踪下游连接的客户端列表3. Google 设计技巧深入分析3.1 TetherMainSM 状态机 — 核心路由控制Google 将 Tethering 的核心流转逻辑封装在TetherMainSM(extendsStateMachine)中:源码 [Tethering.java](file:///d:/Resource/Android%2016/android-16/packages/modules/Connectivity/Tethering/src/com/android/networkstack/tethering/Tethering.java#L1938-L2005) 中定义的状态:classTetherMainSMextendsStateMachine{staticfinalintEVENT_IFACE_SERVING_STATE_ACTIVE=BASE_MAIN_SM+1;staticfinalintEVENT_IFACE_SERVING_STATE_INACTIVE=BASE_MAIN_SM+2;staticfinalintCMD_UPSTREAM_CHANGED=BASE_MAIN_SM+3;staticfinalintCMD_RETRY_UPSTREAM=BASE_MAIN_SM+4;staticfinalintEVENT_UPSTREAM_CALLBACK=BASE_MAIN_SM+5;staticfinalintCMD_CLEAR_ERROR=BASE_MAIN_SM+6;staticfinalintEVENT_IFACE_UPDATE_LINKPROPERTIES=BASE_MAIN_SM+7;staticfinalintEVENT_UPSTREAM_PERMISSION_CHANGED=BASE_MAIN_SM+8;staticfinalintEVENT_REQUEST_CHANGE_DOWNSTREAM=BASE_