Файлы System/bin Android 12. Справочник.


  Все     Команда     Скрипт     Служба     Приложение  

apexd
Служба менеджера APEX

Тип файла: служба
  Eng  

APEX (Android Pony EXpress)- контейнер для системных приложений

   

Комментарии
В архитектуре Android операционная система (часто ее называют прошивкой) жестко
отделена от пользовательских данных и приложений. Она находится на отдельном разделе флеш памяти, доступна только для чтения и в последних версиях Android подписана
электронной подписью для контроля целостности.

Для приложений Android, входящих в состав операционной системы, возможно обновление с размещением новых версий приложений в пользовательском разделе памяти.
Обновление других частей операционной системы (сервисы, библиотеки и т.д.),
например с помощью пакетного менеджера, как на дистрибутивах Linux, было невозможно.

Для таких исправлений производитель был вынужден выпускать обновление всей системы.
При этом, при использовании сервисов Google Mobile Services (подавляющее большинство устройств их использует), каждое обновление требует сертификации в Google.

Project Mainline решает эту проблему, теперь компоненты системы можно обновлять
по отдельности, аналогично Android приложениям. Кроме обновлений безопасности, он также упрощает обновление системных настроек и данных, например о часовых поясах (tzdata).

Основу «Project Mainline» составляет новый контейнер для системных приложений APEX
(сокращение от Android Pony EXpress).

В Android 10 Google выделил в системе 13 APEX пакетов, которые можно обновлять независимо:

Security:

  • Media Codecs,
  • Media Framework Components,
  • DNS Resolver,
  • Conscrypt

Privacy:

  • Documents UI,
  • Permission Controller,
  • ExtServices

Consistency:

  • Timezone data,
  • ANGLE (developers opt-in),
  • Module Metadata,
  • Networking components,
  • Captive Portal Login,
Network Permission Configuration

APEX пакеты можно устанавливать аналогично APK с помощью «установщика пакетов», adb или Google Play.
APEX файл похож на используемый для Andoird приложений APK.

APEX это zip архив, содержащий 4 основных файла:

apex_manifest.json — содержит имя пакета и его версию;
AndroidManifest.xml — метаданные пакета (аналогично APK);
apex_payload.img — образ ext4 файловой системы;
apex_pubkey — открытый ключ для проверки подписи образа.

С APEX пакетами работает системный сервис APEX manager (apexd).

APEX manager

Установщик пакетов, определив что это APEX пакет, передает его APEX менеджеру.
APEX менеджер проверяет пакет и его версию.

Если проверки проходят, распаковывает его в пользовательский раздел памяти, обновляет запись в своей базе данных и перезагружает устройства.

При загрузке APEX менеджер проверяет все пакеты из базы данных, создает loop устройство для ext4 образа и монтирует его по пути /apex/name@ver.

Внутри образа из APEX пакета могут быть:

[liисполняемые файлы,
[liразделяемые (.so) библиотеки,
  • JAR библиотеки,
  • файлы с данными,
  • конфигурационные файлы.

    Подпись APEX пакета

    APEX пакет подписывается два раза, двумя разными ключами. Одним ключом подписывается ext4 образ (используется dm-verity, как в Android Verified Boot), вторым ключом подписывается APEX пакет (zip-файл) аналогично APK пакету.

    Linux kernel

    Для работы APEX используется ряд механизмов Linux ядра, таких как loop-устройство, DM-verity.
    Работа APEX поддерживается на ядре версии 4.4 и выше. Для устройств на более старых версия ядра, поддерживается только работа в «плоском» режиме, не поддерживающем обновление.