Android 10 включает следующие сетевые модули:
- Модуль «Сетевые компоненты» предоставляет общие IP-сервисы, мониторинг сетевого подключения и обнаружение авторизованного портала входа в систему.
- Модуль Network Stack Permission Config определяет разрешение, которое позволяет модулям выполнять задачи, связанные с сетью.
Модуль сетевых компонентов
Модуль сетевых компонентов гарантирует, что Android может адаптироваться к меняющимся сетевым стандартам и обеспечивает совместимость с новыми реализациями. Например, обновления обнаружения портала авторизации и кода входа в систему позволяют Android оставаться в курсе меняющихся моделей портала авторизации, а обновления брандмауэра Advanced Policy Firewall (APF) позволяют Android экономить энергию на Wi-Fi по мере распространения новых типов пакетов.
Изменения в Android 10
Модуль сетевых компонентов содержит следующие компоненты.
- ИП услуги. Компонент IpClient (ранее IpManager) обеспечивает подготовку и обслуживание IP-уровня. В Android 9 он использовался в кросс-процессе такими компонентами, как Bluetooth, и внутри процесса такими компонентами, как Wi-Fi. Компонент DhcpClient получает IP-адреса от DHCP-серверов, чтобы их можно было назначать интерфейсам.
- Сетевой монитор. Компонент NetworkMonitor проверяет доступность в Интернете при подключении к новой сети или при сетевых сбоях, при обнаружении авторизованных порталов и при проверке сетей.
- Приложение авторизации портала Captive. Приложение авторизации портала авторизации — это предустановленное приложение, отвечающее за управление авторизацией на порталах авторизации. Начиная с Android 5.0, это было отдельное приложение, но оно взаимодействует с NetworkMonitor для перенаправления некоторых пользовательских настроек в систему.
На устройствах, использующих модуль Networking Components, вышеперечисленные сервисы рефакторингуются в другой процесс и доступны с использованием стабильных интерфейсов AIDL . Пути рефакторинга показаны в следующих таблицах.
Пути рефакторинга IP Services
Андроид 9 и ниже | В frameworks/base/services/net/java/android/net/ :
|
---|---|
Андроид 10 и выше | packages/modules/NetworkStack |
Пути рефакторинга Captive Portal Login
Андроид 9 и ниже | В frameworks/base/ :
|
---|---|
Андроид 10 и выше | packages/modules/CaptivePortalLogin (и некоторые другие общие места) |
Формат и зависимости
Модуль Networking Components поставляется в виде трех APK: один для IP-сервисов, один для входа в авторизованный портал и один для конфигурации разрешений сетевого стека .
Модуль сетевых компонентов зависит от следующего:
- Привилегированные методы
@hide
на системном сервере (например, вIConnectivityManager.aidl
). Эти API были аннотированы@SystemApi
и соответствующим образом защищены, чтобы они были доступны для модуля, но не для других привилегированных приложений (например, с использованием нового разрешения подписи). - Связать IPC с
netd
определенным вINetd.aidl
. Этот интерфейс был преобразован в стабильный AIDL и подлежит тестированию на соответствие.
Модуль конфигурации разрешений сетевого стека
Модуль конфигурации разрешения сетевого стека не содержит кода, но вместо этого определяет разрешение, предназначенное для использования модулями сетевого стека и авторизации на портале авторизации. Система позволяет модулям, которым предоставлено это разрешение, выполнять связанные задачи настройки сети на устройстве.