網路堆疊是一個可更新的主線模組,可確保 Android 能夠適應不斷發展的網路標準,並允許與新實現的互通性。例如,強制入口網站偵測和登入程式碼的更新使 Android 能夠及時了解不斷變化的強制入口網站模型,而隨著新型資料包的普及,對 APF 的更新使 Android 能夠節省 Wi-Fi 電量。
包含的組件
網路堆疊模組包含以下元件。在使用該模組的裝置上,這些服務被移動到不同的進程,並透過穩定的 AIDL 介面進行存取。
智慧財產權服務。
IpClient
(以前稱為IpManager
)是負責 IP 層配置和維護的元件。在 Android 9 中,它已被藍牙等元件跨進程使用,並被 Wi-Fi 等元件在進程內使用。DhcpClient
從 DHCP 伺服器取得 IP 位址,以便將它們指派給介面。網路監視器。
NetworkMonitor
元件在連接到新網路或網路故障時、偵測強制入口網站以及驗證網路時測試 Internet 可及性。強制門戶登入應用程式。一個預先安裝的應用程序,負責管理強制門戶上的登入。自 Android 5.0 以來,它一直是一個單獨的應用程序,但它與
NetworkMonitor
交互,將一些用戶選擇轉發給系統。
受影響的路徑
下面列出了透過重構移動到網路堆疊模組的路徑。
智慧財產權服務。在
frameworks/base/services/net/java/android/net/
中:-
apf
-
dhcp
-
ip
-
netlink
-
util
(部分)
-
強制門戶檢測和登入。在
frameworks/base/
中:-
core/java/android/net/captiveportal/
-
services/core/java/com/android/server/connectivity/NetworkMonitor.java
-
packages/CaptivePortalLogin/*
-
行動程式碼的新位置位於packages/modules/NetworkStack
、 packages/modules/CaptivePortalLogin
和其他一些共用位置。上述路徑指的是檔案在被移動到主線之前的位置。 packages/modules/NetworkStack
和packages/modules/CaptivePortalLogin
中的檔案是Mainline 模組的一部分,無法修改。
封裝格式
網路堆疊模組包含以下 APK 格式的元件:
- 智慧財產權服務
- 強制入口網站登入 (
com.google.android.captiveportallogin
)
此模組附帶網路堆疊權限配置模組,該模組是一個預先安裝的 APK 文件,用於定義網路堆疊組件的必要權限。
依賴關係
網路堆疊模組取決於以下各項:
系統伺服器中的特權 @hide 方法(例如,在
IConnectivityManager.aidl
中)。這些 API 已被設定為@SystemApi
並受到適當的保護,以便主線模組可以存取它們,但其他特權應用程式無法存取它們(例如,使用新的簽署權限)。INetd.aidl
中定義的netd
的 Binder IPC。此介面已轉換為穩定的AIDL,並接受一致性測試。