Android 13 更新
更新 | 更多資訊 |
---|---|
推出 CrossDevice | CrossDevice |
推出分割隧道功能 | 分割通道 |
總覽
網路共用模組可將 Android 裝置的網際網路連線與其他已連線的用戶端裝置共用,這些裝置可透過 Wi-Fi、USB、藍牙或乙太網路連線至網路共用裝置。這個模組包含網路共用元件 (USB、Wi-Fi 存取點、藍牙等) 及其依附元件 (與網路共用授權、IpServer
和 offloadController
的互動)。這個模組可更新,也就是說,它可以在正常的 Android 發布週期之外接收功能更新。
連線模組可讓 Android 生態系統中的原始設備製造商 (OEM) 使用單一標準參考實作項目,帶來下列優點。
使用者可在各 Android 裝置上獲得一致的體驗,並透過模組更新修正互通性問題。
原始設備製造商 (OEM) 可以滿足電信業者需求,同時降低個別客製化作業的成本 (因為他們不需要以不同方式實作相同需求)。
分割通道
為了支援分割隧道用途,Android 13 新增了 API,可用於指定排除路徑。
分割通道是指某些流量會透過 VPN,而其他流量則不會透過 VPN 的設定。常見的例子是,機構希望一般網頁瀏覽、頻寬需求高的應用程式 (例如 YouTube、Netflix) 或對延遲敏感的應用程式 (例如 Office 365) 能繞過 VPN。在分割式通道可用之前,VpnService.Builder
允許 VPN 用戶端指出只應將部分子網路轉送至該用戶端 (include 路徑)。透過分割通道,您可以指定相反的情況:將所有流量轉送至 VPN,除了特定子網路 (排除路徑) 以外。
新的分割隧道 API 簽章如下:
public Builder excludeRoute(@NonNull IpPrefix prefix)
CrossDevice
在 Android 13 中推出的 CrossDevice,旨在提供使用標準通訊協定的跨裝置通訊技術。提供裝置探索、驗證連線和其他跨裝置體驗的 API 和功能。
跨裝置動機
- 與原始設備製造商 (OEM) 合作夥伴的協作更加緊密。原始設備製造商 (OEM) 可以將自己的帳戶金鑰系統與 CrossDevice 實作整合,而不需要使用 Google 的解決方案。
- 更明顯的通訊協定實作方式。CrossDevice 模組是開放原始碼,可讓您更清楚瞭解實作細節,並改善 CrossDevice 技術實作項目的隱私權說明。
CrossDevice 模組邊界
CrossDevice API | 在 packages/modules/CrossDevice/framework
|
跨裝置服務 | 在 packages/modules/CrossDevice/service
|
CrossDevice 套件格式
這個模組的主函式包含在 APEX 套件中。資源會封裝在 APK 中。
CrossDevice 依附元件
CrossDevice 取決於下列因素:
- Wi-Fi
- 藍牙
- UWB
- modules-utils-preconditions
- Proto 程式庫
CrossDevice 自訂選項
我們預計允許 OEM 透過 RRO 自訂半頁面 UI。我們沒有計劃自訂這項功能。
跨裝置測試策略
我們預計會新增 Android Compatibility Test Suite (CTS) 測試,以驗證 CrossDevice 功能,並將跨裝置測試納入 MTS。
eBPF 網路共用卸載
為了在不依賴硬體卸載的情況下提供高速網路共用功能,Android 11 提供名為 eBPF 網路共用卸載的軟體卸載解決方案,可用於 IPv6 下載 (流量流向網路共用裝置)。
自 Android 12 起,這項功能 (包括 eBPF 程式碼) 完全由 Tethering 模組提供,後者支援下列項目:
- IPv6 下載 (流量流向已綁定的裝置)
- IPv6 上傳 (來自已綁定裝置的流量)
- IPv4 TCP/UDP 上傳和下載 (流量流向/來自 Tethered 裝置)
- 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。網路共用功能的範圍擴大至連線模組。
模組依附元件
共用網路模組有下列依附元件:
- 系統伺服器中的公開和系統 API 方法
- 穩定的 AIDL IPC 與系統伺服器介面
tetheroffload
HIDL (在hardware/interfaces/tetheroffload/
中定義)- DHCP 伺服器 (網路堆疊模組的一部分)
自訂
共用網路模組不支援自訂設定。
測試
Android Compatibility Test Suite (CTS) 可驗證 Tethering 模組的功能。