Stos sieciowy

Network Stack to moduł Mainline, który można aktualizować. Zapewnia on, że Android może dostosowywać się do zmieniających się standardów sieciowych i umożliwia interoperacyjność z nowymi implementacjami. Na przykład aktualizacje wykrywania portalu przechwytującego i kodu logowania pozwalają Androidowi być na bieżąco ze zmieniającymi się modelami portali przechwytujących, a aktualizacje APF umożliwiają oszczędzanie energii przez Androida w przypadku Wi-Fi, gdy pojawiają się nowe typy pakietów.

Komponenty w zestawie

Moduł Network Stack zawiera te komponenty: Na urządzeniach korzystających z modułu usługi te zostały przeniesione do innego procesu i są dostępne za pomocą stabilnego interfejsu AIDL.

  • Usługi IP IpClient (wcześniej IpManager) to komponent odpowiedzialny za udostępnianie i utrzymywanie warstwy IP. W Androidzie 9 był już używany w różnych procesach przez komponenty takie jak Bluetooth oraz w ramach jednego procesu przez komponenty takie jak Wi-Fi. DhcpClient pobiera adresy IP z serwerów DHCP, aby można było je przypisać do interfejsów.

  • NetworkMonitor Komponent NetworkMonitor sprawdza dostępność internetu podczas łączenia się z nową siecią lub w przypadku awarii sieci, wykrywania portali przechwytujących i weryfikowania sieci.

  • Aplikacja do logowania w portalu przechwytującym.Wstępnie zainstalowana aplikacja do zarządzania logowaniem w portalach przechwytujących. Od Androida 5.0 jest to osobna aplikacja, ale współpracuje z NetworkMonitor, aby przekazywać do systemu niektóre wybory użytkownika.

Ścieżki, których dotyczy problem

Ścieżki przeniesione do modułu Network Stack w wyniku refaktoryzacji są wymienione poniżej.

  • Usługi IPframeworks/base/services/net/java/android/net/:

    • apf
    • dhcp
    • ip
    • netlink
    • util (częściowo)
  • Wykrywanie portalu przechwytującego i logowanie się do niego. W frameworks/base/:

    • core/java/android/net/captiveportal/
    • services/core/java/com/android/server/connectivity/NetworkMonitor.java
    • packages/CaptivePortalLogin/*

Nowa lokalizacja przeniesionego kodu to packages/modules/NetworkStack,packages/modules/CaptivePortalLogin i inne udostępnione lokalizacje. Powyższe ścieżki odnoszą się do lokalizacji plików przed przeniesieniem ich do Mainline. Pliki w packages/modules/NetworkStackpackages/modules/CaptivePortalLogin są częścią modułu Mainline i nie można ich modyfikować.

Format pakietu

Moduł Network Stack zawiera te komponenty w formacie APK:

  • Usługi związane z własnością intelektualną
  • Logowanie do portalu przechwytującego (com.google.android.captiveportallogin)

Temu modułowi towarzyszy moduł Network Stack Permission Config, który jest wstępnie zainstalowanym plikiem APK definiującym uprawnienia niezbędne do działania komponentów Network Stack.

Zależności

Moduł Network Stack zależy od tych elementów:

  • Uprzywilejowane metody @hide na serwerze systemowym (np. w IConnectivityManager.aidl). Te interfejsy API zostały @SystemApi i odpowiednio zabezpieczone, aby były dostępne dla modułu Mainline, ale nie dla innych uprzywilejowanych aplikacji (np. za pomocą nowego uprawnienia podpisu).

  • Binder IPCs to netd defined in INetd.aidl. Ten interfejs został przekonwertowany na stabilny AIDL i podlega testom zgodności.