Mainline

В Android 10 появилась функция Mainline (ранее на этом сайте она называлась модульными системными компонентами). Mainline разбивает некоторые компоненты системы Android на модули и позволяет обновлять их вне обычного цикла выпуска Android. Это позволяет Google и партнерам Android быстро и незаметно распространять обновления на устройства конечных пользователей.

Устройства конечных пользователей могут получать обновления Mainline через функцию обновления системы Google Play (которая работает на инфраструктуре Google Play) или через механизм беспроводного обновления, предоставляемый партнером.

Архитектура

Mainline преобразует выбранные системные компоненты в модули. Модульная архитектура, показанная на рисунке 1, позволяет обновлять системные компоненты, добавляя важные исправления ошибок и другие улучшения, не затрагивая реализации поставщиков на более низком уровне или приложения и сервисы на более высоком уровне.

Архитектура Mainline

Рисунок 1. Архитектура Mainline

Обновления модулей не добавляют новые API. Они используют только SDK и системные API, гарантированные набором тестов на совместимость (CTS), взаимодействуют только друг с другом и используют только стабильные C API или стабильные интерфейсы AIDL.

Обновления модулей

Некоторые основные модули используют формат контейнера APEX (представленный в Android 10), а некоторые – формат APK.

Обновленные модули Mainline можно упаковать вместе и отправить на устройства конечных пользователей. Это может сделать Google с помощью функции обновления системы через Google Play или партнер Android с помощью собственного механизма OTA. Пакет модуля устанавливается и откатывается атомарно: либо все модули, которые нужно обновить, обновляются, либо ни один не обновляется.

Доступные модули

Название модуля Название пакета Тип Выпуск, в котором появилась функция
adbd com.android.adbd APEX Android 11
AdServices com.google.android.adservices APEX Android 13
Android Health com.google.android.healthfitness APEX Android 14
AppSearch com.android.appsearch APEX Android 13
ART com.android.art APEX Android 12
Bluetooth. com.google.android.bt APEX Android 13
CellBroadcast com.android.cellbroadcast APEX Android 11
Инфраструктура конфигурации com.android.configinfrastructure APEX Android 14
Conscrypt com.android.conscrypt APEX Android 10
Планирование устройств com.android.scheduling APEX Android 12
DNS-резолвер com.android.resolv APEX Android 10
DocumentsUI com.android.documentsui APK Android 10
ExtServices com.android.ext.services APK (Android 10)
APEX (Android 11)
Android 10
IPsec/IKEv2 Library com.android.ipsec APEX Android 11
Медиафайлы Медиа:
com.android.media

Медиакодеки:
com.android.media.swcodec
APEX Android 10 (извлекатели, MediaSession API)
Android 11 (MediaParser API)
MediaProvider com.android.mediaprovider APEXAndroid 11
ModuleMetadata com.android.modulemetadata APK Android 10
Сетевой стек Настройка разрешений для сетевого стека:
com.android.networkstack.permissionconfig

Вход на страницу входа:
com.android.captiveportallogin

Сетевые компоненты:
com.android.networkstack
APK Android 10
NNAPI Runtime com.android.neuralnetworks APK Android 11
OnDevicePersonalization Runtime Основные функции пакета (APEX):
com.google.android.ondevicepersonalization

Функции API OnDevicePersonalization (APK):
com.google.android.ondevicepersonalization

Функции API FederatedCompute (APK):
com.google.android.federatedcompute
APEX и APK Android 13
PermissionController com.android.permissioncontroller APK Android 10
Удаленная инициализация ключей com.android.rkpd APEX Android 14
Расширения SDK com.android.sdkext APEX Android 11
Statsd com.android.os.statsd APEX Android 11
Режим модема com.android.tethering APEX Android 11
Данные о часовых поясах com.android.tzdata APEX Android 10
UWB com.android.uwb APEX Android 13
Wi-Fi com.android.wifi APEX Android 11