В Android 10 появилась функция Mainline (ранее на этом сайте она называлась модульными системными компонентами). Mainline разбивает некоторые компоненты системы Android на модули и позволяет обновлять их вне обычного цикла выпуска Android. Это позволяет Google и партнерам Android быстро и незаметно распространять обновления на устройства конечных пользователей.
Устройства конечных пользователей могут получать обновления Mainline через функцию обновления системы Google Play (которая работает на инфраструктуре Google Play) или через механизм беспроводного обновления, предоставляемый партнером.
Архитектура
Mainline преобразует выбранные системные компоненты в модули. Модульная архитектура, показанная на рисунке 1, позволяет обновлять системные компоненты, добавляя важные исправления ошибок и другие улучшения, не затрагивая реализации поставщиков на более низком уровне или приложения и сервисы на более высоком уровне.
Рисунок 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 |
APEX | Android 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 |