Network Stack ist ein aktualisierbares Mainline-Modul, das sicherstellt, dass Android sich an sich entwickelnde Netzwerkstandards anpassen kann und Interoperabilität mit neuen Implementierungen ermöglicht. Beispielsweise ermöglichen Aktualisierungen der Captive-Portal-Erkennung und des Anmeldecodes, dass Android mit sich ändernden Captive-Portal-Modellen auf dem Laufenden bleibt, und Aktualisierungen von APF ermöglichen es Android, WLAN-Energie zu sparen, wenn neue Pakettypen verbreitet werden.
Enthaltene Komponenten
Das Network Stack-Modul enthält die folgenden Komponenten. Auf Geräten, die das Modul verwenden, wurden diese Dienste in einen anderen Prozess verschoben und der Zugriff erfolgt über eine stabile AIDL-Schnittstelle.
IP-Dienste.
IpClient
(früherIpManager
) ist eine Komponente, die für die Bereitstellung und Wartung der IP-Ebene zuständig ist. In Android 9 wurde es bereits prozessübergreifend von Komponenten wie Bluetooth und prozessintern von Komponenten wie Wi-Fi verwendet.DhcpClient
erhält IP-Adressen von DHCP-Servern, damit diese Schnittstellen zugewiesen werden können.NetzwerkMonitor. Die
NetworkMonitor
Komponente testet die Internet-Erreichbarkeit beim Herstellen einer Verbindung zu einem neuen Netzwerk oder bei Netzwerkausfällen, bei der Erkennung von Captive-Portalen und bei der Validierung von Netzwerken.Captive-Portal-Login-App. Eine vorinstallierte App, die für die Verwaltung der Anmeldung auf Captive-Portalen zuständig ist. Dies ist seit Android 5.0 eine separate App, die jedoch mit
NetworkMonitor
interagiert, um einige Benutzerentscheidungen an das System weiterzuleiten.
Betroffene Pfade
Die vom Refactor zum Network Stack-Modul verschobenen Pfade sind unten aufgeführt.
IP-Dienste. In
frameworks/base/services/net/java/android/net/
:-
apf
-
dhcp
-
ip
-
netlink
-
util
(teilweise)
-
Captive-Portal-Erkennung und Anmeldung. In
frameworks/base/
:-
core/java/android/net/captiveportal/
-
services/core/java/com/android/server/connectivity/NetworkMonitor.java
-
packages/CaptivePortalLogin/*
-
Der neue Speicherort des verschobenen Codes befindet sich in packages/modules/NetworkStack
, packages/modules/CaptivePortalLogin
und einigen anderen freigegebenen Speicherorten. Die oben genannten Pfade beziehen sich auf den Speicherort der Dateien, bevor sie für Mainline dorthin verschoben werden. Dateien in packages/modules/NetworkStack
und packages/modules/CaptivePortalLogin
sind Teil des Mainline-Moduls und können nicht geändert werden.
Paketformat
Das Network Stack-Modul enthält die folgenden Komponenten im APK-Format:
- IP-Dienste
- Captive-Portal-Anmeldung (
com.google.android.captiveportallogin
)
Dieses Modul wird vom Modul Network Stack Permission Config begleitet, bei dem es sich um eine vorinstallierte APK-Datei handelt, die die erforderlichen Berechtigungen für die Network Stack-Komponenten definiert.
Abhängigkeiten
Das Network Stack-Modul hängt von Folgendem ab:
Privilegierte @hide-Methoden im Systemserver (z. B. in
IConnectivityManager.aidl
). Diese APIs wurden zu@SystemApi
gemacht und entsprechend geschützt, sodass sie für das Mainline-Modul zugänglich sind, nicht jedoch für andere privilegierte Apps (z. B. durch Verwendung einer neuen Signaturberechtigung).Binder-IPCs an
netd
, definiert inINetd.aidl
. Diese Schnittstelle wurde auf stabiles AIDL umgestellt und unterliegt Konformitätstests.