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

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

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

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

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

Treble отделяет реализацию поставщика (программное обеспечение нижнего уровня для конкретных устройств, написанное производителями микросхем) от платформы Android OS через новый интерфейс поставщика. Вендоры или SOC производители строят ГАЛС раз и поместить их в /vendor раздела на устройстве; рамки, в отдельном разделе, затем могут быть заменены на более-воздух (OTA) обновления без перекомпиляции Хальса.

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

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

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

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

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

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

Подробнее об архитектуре Android см. В следующих разделах:

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

В дополнении к ресурсам на этом сайте, члены команд Скрипичных опубликованных Treble: Fast обновления программного обеспечения Создания Равновесия в Активной Software Экосистеме глобально распределенные Заинтересованные стороны . Бумага бесплатна для членов ACM, а лица, не являющиеся членами ACM, могут приобрести или прочитать тезисы.