网络共享模块可将 Android 设备的互联网连接与连接的其他客户端设备共享,这些设备可以通过 Wi-Fi、USB、蓝牙或以太网连接到网络共享设备。此模块包含网络共享组件(USB、Wi-Fi 接入点、蓝牙等)及其依赖项(与网络共享权限、IpServer
和 offloadController
的交互)。此模块是可更新的,这意味着它可在 Android 常规发布周期外的时间接收功能更新。
网络共享模块可让整个 Android 生态系统中的 OEM 使用单个标准参考实现,该实现具有以下优势。
最终用户可在不同 Android 设备上获得一致的体验,并可通过模块更新解决互操作性问题。
OEM 可以满足运营商要求,同时也可以减少进行单独自定义的费用(因为他们不需要以不同的方式实现相同的要求)。
IPv4 和 IPv6 支持
网络共享模块支持 IPv4 和 IPv6 双栈。
对于 IPv4 网络,该模块会设置网络地址转换 (NAT),并采用动态主机配置协议 (DHCP) 进行 IP 地址分配。
对于 IPv6 网络,该模块会采用 IPv6 无状态地址自动配置 (SLAAC) 进行 IP 地址分配。
模块边界
在 Android 11 中,网络共享模块将以下 Android 10 文件移至 packages/modules/Tethering
。
frameworks/base/services/core/java/com/android/server/connectivity/Tethering.java
frameworks/base/services/core/java/com/android/server/connectivity/tethering/
frameworks/base/services/core/java/com/android/server/NetworkManagementService.java
frameworks/base/services/net/java/android/net/ip/{InterfaceController,IpServer,RouterAdvertisementDaemon}.java
frameworks/base/services/net/java/android/net/{netlink,dhcp}/*
frameworks/base/services/net/java/android/net/util/{InterfaceSet,InterfaceParams,NetdService,PrefixUtils,SharedLog,VersionedBroadcastListener}.java
frameworks/base/core/java/android/net/{ITetheringEventCallback,ITetheringStatsProvider}.aidl
frameworks/base/core/java/android/net/{NetworkUtils,util/IpUtils}.java
frameworks/base/core/java/com/android/internal/util/{BitUtils,IndentingPrintWriter,State,StateMachine}.java
frameworks/base/core/java/com/android/server/connectivity/MockableSystemProperties.java
frameworks/base/core/java/android/os/INetworkManagementService.aidl
frameworks/base/core/java/android/bluetooth/BluetoothPan.java
frameworks/base/services/core/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpp
packages/apps/Settings/src/com/android/settings/wifi/tether/TetherService.java
packages/apps/Settings/src/com/android/settings/network/TetherProvisioningActivity.java
模块格式
网络共享模块 (com.google.android.tethering
) 采用 APK 格式,适用于搭载 Android 11 或更高版本的设备。
模块依赖项
网络共享模块具有以下依赖项:
- 系统服务器中的公共 API 和系统 API 方法
- 与系统服务器的稳定 AIDL IPC 接口
tetheroffload
HIDL(在hardware/interfaces/tetheroffload/
中定义)- DHCP 服务器(网络堆栈模块的一部分)
自定义
网络共享模块不支持自定义。
测试
Android 兼容性测试套件 (CTS) 可验证网络共享模块的功能。