Сетевой стек – это обновляемый модуль Mainline, который позволяет Android адаптироваться к новым стандартам сети и обеспечивает совместимость с новыми реализациями. Например, обновления кода обнаружения страниц входа и входа в систему позволяют Android поддерживать актуальность моделей страниц входа, а обновления APF позволяют Android экономить энергию при использовании Wi-Fi, поскольку новые типы пакетов становятся более распространенными.
Включенные компоненты
Модуль сетевого стека содержит следующие компоненты: На устройствах, использующих модуль, эти сервисы были перенесены в другой процесс и доступны через стабильный интерфейс AIDL.
Сервисы IP-адресов.
IpClient(ранее –IpManager) – это компонент, отвечающий за инициализацию и обслуживание IP-уровня. В Android 9 она уже использовалась в межпроцессном взаимодействии такими компонентами, как Bluetooth, и во внутрипроцессном взаимодействии такими компонентами, как Wi-Fi.DhcpClientполучает IP-адреса от DHCP-серверов, чтобы их можно было назначить интерфейсам.NetworkMonitor. Компонент
NetworkMonitorпроверяет доступность интернета при подключении к новой сети или при сбоях в сети, при обнаружении страниц входа и при проверке сетей.Приложение для авторизации на странице входа. Предустановленное приложение, которое управляет авторизацией на страницах входа. Это отдельное приложение, начиная с Android 5.0, но оно взаимодействует с
NetworkMonitor, чтобы передавать некоторые пользовательские настройки в систему.
Затронутые пути
Ниже перечислены пути, которые были перенесены в модуль сетевого стека в результате рефакторинга.
Сервисы IP-адресов. В
frameworks/base/services/net/java/android/net/:apfdhcpipnetlinkutil(частично)
Обнаружение страниц входа и авторизация на них. В
frameworks/base/:core/java/android/net/captiveportal/services/core/java/com/android/server/connectivity/NetworkMonitor.javapackages/CaptivePortalLogin/*
Новое местоположение перемещенного кода: packages/modules/NetworkStack, packages/modules/CaptivePortalLogin и другие общие местоположения. Выше указаны пути к файлам до их перемещения в Mainline.
Файлы в packages/modules/NetworkStack и packages/modules/CaptivePortalLogin являются частью основного модуля и не могут быть изменены.
Формат пакета
Модуль сетевого стека содержит следующие компоненты в формате APK:
- Сервисы IP
- Авторизация на странице входа (
com.google.android.captiveportallogin)
Этот модуль сопровождается модулем конфигурации разрешений сетевого стека – предустановленным APK-файлом, в котором определены необходимые разрешения для компонентов сетевого стека.
Связанные запросы
Модуль сетевого стека зависит от следующих компонентов:
Привилегированные методы @hide в системном сервере (например, в
IConnectivityManager.aidl). Эти API были сделаны@SystemApiи защищены таким образом, чтобы они были доступны модулю Mainline, но не другим привилегированным приложениям (например, с помощью нового разрешения на подпись).Binder IPCs to
netddefined inINetd.aidl. Этот интерфейс был преобразован в стабильный AIDL и подвергается проверкам соответствия.