网络共享模块与其他已连接的客户端设备共享一个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方法
稳定的AIDL IPC与系统服务器的接口
tetheroffload HIDL(在hardware/interfaces/tetheroffload/定义)
DHCP服务器(网络堆栈模块的一部分)
客制化
共享网络模块不支持自定义。
测验
Android兼容性测试套件(CTS)验证网络共享模块的功能。