Google стремится продвигать расовую справедливость для черных сообществ. Смотри как.
Эта страница была переведа с помощью Cloud Translation API.
Switch to English

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

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

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

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

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

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

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

  • В 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 Типы . Описывает бандризованные, транзитные, Same-Process (SP) и устаревшие HAL.
  • ХИДЛ (общее) . Содержит общую информацию об интерфейсе между HAL и его пользователями.
  • HIDL (C ++) . Содержит сведения о создании реализаций интерфейсов HIDL в C ++.
  • HIDL (Java) . Содержит сведения об интерфейсе Java для интерфейсов HIDL.
  • ConfigStore HAL . Описывает API для доступа к элементам конфигурации только для чтения, используемым для настройки платформы Android.
  • Наложения дерева устройств . Предоставляет подробную информацию об использовании наложений дерева устройств в Android.
  • Комплект разработчика для поставщиков (VNDK) . Описывает набор эксклюзивных библиотек для реализации HAL поставщиков.
  • Объект интерфейса поставщика (VINTF) . Описывает объекты, которые собирают релевантную информацию об устройстве и делают эту информацию доступной через запрашиваемый API.
  • SELinux для Android 8.0 . Подробности SELinux об изменениях и настройках.

В дополнение к ресурсам на этом сайте члены группы Treble опубликовали Treble: Быстрые обновления программного обеспечения путем создания равновесия в активной программной экосистеме глобально распределенных заинтересованных сторон . Статья является бесплатной для членов ACM, и не члены могут приобрести или прочитать реферат.