Android-архитектура

Архитектура системы Android содержит следующие компоненты:

Обзор системной архитектуры Android
Рисунок 1. Архитектура системы Android
  • Каркас приложения . Платформа приложения чаще всего используется разработчиками приложений. Как разработчик оборудования, вы должны знать об API-интерфейсах разработчиков, поскольку многие из них напрямую связаны с базовыми интерфейсами HAL и могут предоставить полезную информацию о реализации драйверов.
  • Связующее МПК . Механизм Binder Inter-Process Communication (IPC) позволяет платформе приложения пересекать границы процессов и вызывать код системных служб Android. Это позволяет высокоуровневым API-интерфейсам платформы взаимодействовать с системными службами Android. На уровне структуры приложения это взаимодействие скрыто от разработчика, и кажется, что все «просто работает».
  • Системные службы . Системные службы — это модульные специализированные компоненты, такие как диспетчер окон, служба поиска или диспетчер уведомлений. Функциональные возможности, предоставляемые API-интерфейсами платформы приложений, взаимодействуют с системными службами для доступа к базовому оборудованию. Android включает в себя две группы служб: системные (такие как диспетчер окон и диспетчер уведомлений) и медиа (службы, задействованные в воспроизведении и записи медиафайлов).
  • Уровень аппаратной абстракции (HAL) . HAL определяет стандартный интерфейс для реализации поставщиками оборудования, что позволяет Android не зависеть от реализации драйверов более низкого уровня. Использование HAL позволяет реализовать функциональность, не затрагивая и не изменяя систему более высокого уровня. Реализации HAL упаковываются в модули и загружаются системой Android в нужное время. Дополнительные сведения см. в разделе Уровень аппаратной абстракции (HAL) .
  • Ядро линукса . Разработка драйверов устройств аналогична разработке типичного драйвера устройства Linux. Android использует версию ядра Linux с несколькими специальными дополнениями, такими как Low Memory Killer (система управления памятью, которая более агрессивна в сохранении памяти), wake locks (системная служба PowerManager ), драйвер Binder IPC и другие важные функции. для мобильной встроенной платформы. Эти дополнения в первую очередь предназначены для функциональности системы и не влияют на разработку драйверов. Вы можете использовать любую версию ядра, если она поддерживает необходимые функции (например, драйвер связывателя). Однако мы рекомендуем использовать последнюю версию ядра Android. Подробности см. в разделе Построение ядер .

Язык определения интерфейса HAL (AIDL/HIDL)

Android 8.0 перестроил структуру ОС Android (в рамках проекта, известного как Treble ), чтобы производителям было проще, быстрее и дешевле обновлять устройства до новой версии Android. В этой новой архитектуре язык определения интерфейса HAL (HIDL, произносится как «hide-l») определяет интерфейс между HAL и его пользователями, позволяя заменить инфраструктуру Android без перестройки HAL. В Android 10 функции HIDL были включены в AIDL. С тех пор HIDL устарел и используется только теми подсистемами, которые еще не преобразованы в AIDL.

Treble отделяет реализацию поставщика (программное обеспечение более низкого уровня для конкретного устройства, написанное производителями микросхем) от платформы ОС Android с помощью нового интерфейса поставщика. Поставщики или производители SOC создают HAL один раз и помещают их в раздел /vendor на устройстве; Затем фреймворк в своем собственном разделе можно заменить беспроводным (OTA) обновлением без перекомпиляции HAL.

Разница между устаревшей архитектурой Android и текущей архитектурой на основе IDL заключается в использовании интерфейса поставщика:

  • В Android 7.x и более ранних версиях не существует формального интерфейса поставщика, поэтому производители устройств должны обновлять большие части кода Android, чтобы перевести устройство на более новую версию Android:

    Рис. 2. Устаревшая среда обновления Android
  • В Android 8.0 и более поздних версиях новый стабильный интерфейс поставщика обеспечивает доступ к аппаратным частям Android, поэтому производители устройств могут выпускать новые выпуски Android, просто обновляя структуру ОС Android — без дополнительной работы со стороны производителей микросхем:

    Рисунок 3. Текущая среда обновления Android

Все новые устройства с Android 8.0 и выше могут использовать преимущества новой архитектуры. Для обеспечения прямой совместимости реализаций вендора интерфейс вендора проверяется набором тестов поставщика (VTS) , который аналогичен набору тестов совместимости (CTS) . Вы можете использовать VTS для автоматизации тестирования ядра HAL и ОС как в устаревших, так и в текущих архитектурах Android.

Ресурсы по архитектуре

Дополнительные сведения об архитектуре Android см. в следующих разделах:

  • HAL-типы . Описывает связанные, сквозные, тот же процесс (SP) и устаревшие HAL.
  • АЙДЛ . Документация по AIDL, независимо от того, используется ли он вообще или как интерфейс HAL.
  • HIDL (общий) . Содержит общую информацию об интерфейсе между HAL и его пользователями.
  • HIDL (С++) . Содержит сведения о создании C++ реализаций интерфейсов HIDL.
  • ХИДЛ (Ява) . Содержит сведения о внешнем интерфейсе Java для интерфейсов HIDL.
  • HAL-хранилище конфигураций . Описывает API для доступа к элементам конфигурации только для чтения, используемым для настройки платформы Android.
  • Наложения дерева устройств . Содержит сведения об использовании наложений дерева устройств (DTO) в Android.
  • Собственный комплект разработки поставщика (VNDK) . Описывает набор эксклюзивных библиотек для реализации поставщиков HAL.
  • Объект интерфейса поставщика (VINTF) . Описывает объекты, которые собирают релевантную информацию об устройстве и делают эту информацию доступной через запрашиваемый API.
  • SELinux для Android 8.0 . Подробные сведения об изменениях и настройках SELinux.

В дополнение к ресурсам на этом сайте члены команды Treble опубликовали Treble: Fast Software Updates by Making a Equilibrium in a Active Software Ecosystem of Globally Distributed Stakeholders . Статья бесплатна для членов ACM, а лица, не являющиеся членами, могут приобрести или прочитать реферат.