網路堆疊

網路堆疊是可更新的 Mainline 模組,可確保 Android 能夠配合不斷演進的網路標準,並與新的實作項目互通。舉例來說,網頁認證入口偵測和登入碼更新後,Android 就能因應網頁認證入口模式的變化,保持在最新狀態;APF 更新後,Android 就能在新型封包普及時,節省 Wi-Fi 的電力。

包含的元件

網路堆疊模組包含下列元件。在採用模組的裝置上,這些服務已移至其他程序,並透過穩定的 AIDL 介面存取。

  • IP 服務。IpClient (舊稱 IpManager) 是負責 IP 層佈建和維護的元件。在 Android 9 中,藍牙等元件已跨程序使用,Wi-Fi 等元件則在程序內使用。DhcpClient 會從 DHCP 伺服器取得 IP 位址,以便指派給介面。

  • NetworkMonitor. NetworkMonitor 元件會在連線至新網路或網路發生故障時、偵測到網頁認證入口時,以及驗證網路時,測試網際網路連線能力。

  • 網頁認證入口登入應用程式:負責管理網頁認證入口登入作業的預先安裝應用程式。自 Android 5.0 起,這就是獨立的應用程式,但會與 NetworkMonitor 互動,將部分使用者選擇轉送至系統。

受影響的路徑

以下列出因重構而移至 Network Stack 模組的路徑。

  • IP 服務。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/NetworkStackpackages/modules/CaptivePortalLogin 和其他共用位置。上述路徑是指檔案移至 Mainline 前的位置。packages/modules/NetworkStackpackages/modules/CaptivePortalLogin 中的檔案屬於 Mainline 模組,無法修改。

套件格式

網路堆疊模組包含下列 APK 格式的元件:

  • IP 服務
  • 網頁認證入口登入 (com.google.android.captiveportallogin)

這個模組隨附網路堆疊權限設定模組,這是預先安裝的 APK 檔案,可定義網路堆疊元件的必要權限。

依附元件

網路堆疊模組依附於下列項目:

  • 系統伺服器中的特權 @hide 方法 (例如 IConnectivityManager.aidl)。這些 API 已適當受到保護,因此可供 Mainline 模組存取,但其他具備特權的應用程式無法存取 (例如使用新的簽章權限)。@SystemApi

  • Binder IPC 至 netd,定義於 INetd.aidl。這個介面已轉換為穩定版 AIDL,並須通過一致性測試。