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 介面,可與系統伺服器互動
tetheroffload
HIDL (定義於hardware/interfaces/tetheroffload/
)- DHCP 伺服器 (網路堆疊模組的一部分)
自訂
「網路共用」模組不支援自訂。
測試
Android Compatibility Test Suite (CTS) 會驗證「網路共用」模組的功能。