网络共享

网络共享模块可将 Android 设备的互联网连接与连接的其他客户端设备共享,这些设备可以通过 Wi-Fi、USB、蓝牙或以太网连接到网络共享设备。此模块包含网络共享组件(USB、Wi-Fi 接入点、蓝牙等)及其依赖项(与网络共享权限、IpServeroffloadController 的交互)。此模块是可更新的,这意味着它可在 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) 可验证网络共享模块的功能。