Android 13 的更新
| Update | 更多資訊 | 
|---|---|
| 導入 CrossDevice | CrossDevice | 
| 推出分割通道功能 | 分割通道 | 
總覽
網路共用模組會與其他連線的用戶端裝置共用 Android 裝置的網際網路連線,這些裝置可透過 Wi-Fi、USB、藍牙或乙太網路連線至網路共用裝置。這個模組包含網路共用元件 (USB、Wi-Fi 存取點、藍牙等) 和其依附元件 (與網路共用授權、IpServer 和 offloadController 互動)。這個模組可更新,也就是說,即使不在正常的 Android 發布週期內,也能接收功能更新。
透過「網路共用」模組,Android 生態系統中的原始設備製造商可以使用單一標準參考實作,享有下列優點。
- 透過模組更新,使用者在 Android 裝置上可獲得一致的體驗,並修正互通性問題。 
- 原始設備製造商可以滿足電信業者需求,同時減少個別自訂項目的成本 (因為他們不需要以不同方式實作相同需求)。 
分割通道
為支援通道分割用途,Android 13 新增了 API,可指定排除路徑。
分割通道是指某些流量會透過 VPN 傳輸,其他流量則不會的設定。常見的例子是機構想要讓一般網頁瀏覽、耗用大量頻寬 (例如 YouTube、Netflix) 或對延遲時間敏感的應用程式 (例如 Office 365) 繞過 VPN。在支援分割通道之前,VpnService.Builder 允許 VPN 用戶端指出只有部分子網路應轉送至該用戶端 (include 路由)。使用通道分割功能時,您可以指定相反的設定:將所有流量轉送到 VPN,但特定子網路除外 (排除路徑)。
新版分割通道 API 的簽章如下:
public Builder excludeRoute(@NonNull IpPrefix prefix)
CrossDevice
Android 13 推出的 CrossDevice 旨在透過標準通訊協定,提供跨裝置通訊技術。這個 SDK 提供 API 和功能,可供探索裝置、驗證連線,以及打造其他跨裝置體驗。
CrossDevice motivation
- 與原始設備製造商 (OEM) 合作夥伴密切合作。OEM 可以將自己的帳戶金鑰系統與 CrossDevice 實作項目整合,不必使用 Google 的解決方案。
- 更顯眼的通訊協定實作方式。CrossDevice 模組為開放原始碼,可讓您進一步瞭解實作詳細資料,並為 CrossDevice 技術實作提供更完善的隱私權故事。
CrossDevice 模組界線
| CrossDevice API | 在 packages/modules/CrossDevice/framework
 | 
| CrossDevice Services | 在 packages/modules/CrossDevice/service
 | 
CrossDevice 套件格式
這個模組的主要功能包含在 APEX 套件中。資源會封裝在 APK 中。
CrossDevice 依附元件
CrossDevice 依附於下列項目:
- Wi-Fi
- 藍牙
- UWB
- modules-utils-preconditions
- Proto 程式庫
跨裝置自訂選項
我們預計允許 OEM 透過 RRO 自訂半頁 UI。目前沒有自訂功能的計畫。
跨裝置測試策略
我們計畫新增 Android Compatibility Test Suite (CTS) 測試,驗證 CrossDevice 功能,並將跨裝置測試納入 MTS。
eBPF 網路共用卸載
為提供高速網路共用功能,且不需依賴硬體卸載,Android 11 提供名為 eBPF 網路共用卸載的網路共用軟體卸載解決方案,適用於 IPv6 下載 (流量流向網路共用裝置)。
自 Android 12 起,這項功能 (包括 eBPF 程式碼) 完全由 Tethering 模組提供,支援以下項目:
- IPv6 下載 (流量流向連線裝置)
- IPv6 上傳 (從連線裝置流出的流量)
- IPv4 TCP/UDP 上傳和下游 (流向/來自連線裝置的流量)
- eBPF 卸載
這項功能預設為啟用,使用者可以透過 RRO 將 config_tether_enable_bpf_offload 設定覆寫為 false。詳情請參閱「自訂」一節。
支援 IPv4 和 IPv6
連線共用模組支援 IPv4 和 IPv6 雙重堆疊。
- 如果是 IPv4 網路,這個模組會設定網路位址轉譯 (NAT),並採用動態主機組態通訊協定 (DHCP) 指派 IP 位址。 
- 如果是 IPv6 網路,模組會採用 IPv6 無狀態位址自動設定 (SLAAC) 指派 IP 位址。 
模組邊界
在 Android 12 以上版本中,packages/modules/Connectivity 下的所有檔案/資料夾都位於 Tethering 模組範圍內。
如果是 Android 11 以下版本,網路共用模組在 packages/modules/Tethering 中有下列 Android 10 檔案。
- 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.android.tethering) 採用 APEX 格式,適用於搭載 Android 11 以上版本的裝置。
包含 ConnectivityService
自 Android 12 起,實作 L3+ 連線中央元件的 ConnectivityService 程式碼會新增至 Tethering APEX。Tethering 的範圍會擴展到連線模組。
模組依附元件
Tethering 模組具有下列依附元件:
- 系統伺服器中的公開和系統 API 方法
- 穩定的 AIDL IPC 介面,可與系統伺服器互動
- tetheroffloadHIDL (定義於- hardware/interfaces/tetheroffload/)
- DHCP 伺服器 (網路堆疊模組的一部分)
自訂
「網路共用」模組不支援自訂。
測試
Android Compatibility Test Suite (CTS) 會驗證「網路共用」模組的功能。
