Network Stack ist ein aktualisierbares Mainline-Modul, das dafür sorgt, dass Android sich an sich entwickelnde Netzwerkstandards anpassen kann und die Interoperabilität mit neuen Implementierungen ermöglicht. Beispielsweise ermöglichen Updates für die Captive Portal-Erkennung und den Anmeldecode, dass Android mit sich ändernden Captive Portal-Modellen auf dem neuesten Stand bleibt. Updates für APF ermöglichen es Android, Strom im WLAN zu sparen, wenn neue Arten von Paketen üblich werden.
Enthaltene Komponenten
Das Modul „Network Stack“ enthält die folgenden Komponenten. Auf Geräten, auf denen das Modul verwendet wird, wurden diese Dienste in einen anderen Prozess verschoben und werden über eine stabile AIDL-Schnittstelle aufgerufen.
IP-Dienste
IpClient
(früherIpManager
) ist eine Komponente, die für die Bereitstellung und Wartung der IP-Schicht zuständig ist. In Android 9 wurde es bereits prozessübergreifend von Komponenten wie Bluetooth und prozessintern von Komponenten wie WLAN verwendet.DhcpClient
ruft IP-Adressen von DHCP-Servern ab, damit sie Schnittstellen zugewiesen werden können.NetworkMonitor: Die
NetworkMonitor
-Komponente testet die Erreichbarkeit des Internets, wenn eine Verbindung zu einem neuen Netzwerk hergestellt wird, bei Netzwerkfehlern, beim Erkennen von Captive Portals und beim Validieren von Netzwerken.Captive Portal-Anmelde-App: Eine vorinstallierte App, die für die Verwaltung der Anmeldung bei Captive Portals zuständig ist. Seit Android 5.0 ist dies eine separate App, die jedoch mit
NetworkMonitor
interagiert, um einige Nutzerauswahlen an das System weiterzuleiten.
Betroffene Pfade
Die Pfade, die durch das Refactoring in das Network Stack-Modul verschoben wurden, 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 verschobene Code befindet sich jetzt in packages/modules/NetworkStack
, packages/modules/CaptivePortalLogin
und einigen anderen freigegebenen Speicherorten. Die oben genannten Pfade beziehen sich auf den Speicherort von Dateien, bevor sie für Mainline dorthin verschoben wurden.
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
- Anmeldung über Captive Portal (
com.google.android.captiveportallogin
)
Dieses Modul wird vom Modul „Network Stack Permission Config“ begleitet. Dabei handelt es sich um eine vorinstallierte APK-Datei, in der die erforderlichen Berechtigungen für die Network Stack-Komponenten definiert sind.
Abhängigkeiten
Das Network Stack-Modul hängt von Folgendem ab:
Privilegierte @hide-Methoden auf dem Systemserver (z.B. in
IConnectivityManager.aidl
). Diese APIs wurden@SystemApi
und entsprechend geschützt, sodass sie für das Mainline-Modul, aber nicht für andere privilegierte Apps zugänglich sind (z.B. über eine neue Signaturberechtigung).Binder-IPCs für
netd
, die inINetd.aidl
definiert sind. Diese Schnittstelle wurde in stabiles AIDL konvertiert und unterliegt Konformitätstests.