Обзор архитектуры

Проект Android с открытым исходным кодом (AOSP) — это общедоступный и изменяемый исходный код Android. Любой может загрузить и изменить AOSP для своего устройства. AOSP обеспечивает полную и полнофункциональную реализацию мобильной платформы Android.

Существует два уровня совместимости устройств, реализующих AOSP: совместимость AOSP и совместимость с Android. AOSP-совместимое устройство должно соответствовать списку требований в Документе определения совместимости (CDD) . Android-совместимое устройство должно соответствовать списку требований в CDD и требованиях к программному обеспечению поставщика (VSR), а также тестам, например, в наборе тестов поставщика (VTS) и наборе тестов совместимости (CTS) . Дополнительную информацию о совместимости Android см. в программе совместимости Android .

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

Программный стек для AOSP содержит следующие уровни:

Архитектура программного стека AOSP.

Рисунок 1. Архитектура программного стека AOSP.

Ниже приводится список определений терминов, используемых на рисунке 1:

Android-приложение
Приложение, созданное исключительно с использованием Android API. Google Play Store широко используется для поиска и загрузки приложений Android, хотя существует множество других альтернатив. В некоторых случаях производитель устройства может захотеть предварительно установить приложение Android для поддержки основных функций устройства. Если вы заинтересованы в разработке приложений для Android, посетите сайт Developers.android.com .
Привилегированное приложение
Приложение, созданное с использованием комбинации API Android и системы. Эти приложения должны быть предварительно установлены на устройстве как привилегированные.
Приложение производителя устройства
Приложение, созданное с использованием комбинации Android API, системного API и прямого доступа к реализации платформы Android. Поскольку производитель устройства может напрямую обращаться к нестабильным API в рамках Android, эти приложения должны быть предварительно установлены на устройстве и могут быть обновлены только при обновлении системного программного обеспечения устройства.
Системный API
Системный API представляет собой API-интерфейсы Android, доступные только партнерам и OEM-производителям для включения в связанные приложения. Эти API помечены в исходном коде как @SystemApi.
Android API
Android API — это общедоступный API для сторонних разработчиков приложений Android. Информацию об API Android см. в справочнике по API Android .
Платформа Android
Группа классов Java, интерфейсов и другого предварительно скомпилированного кода, на основе которого создаются приложения. Части платформы общедоступны благодаря использованию Android API. Другие части платформы доступны только OEM-производителям посредством использования системных API. Код платформы Android выполняется внутри процесса приложения.
Системные службы
Системные службы — это модульные специализированные компоненты, такие как system_server , SurfaceFlinger и MediaService. Функциональность, предоставляемая API платформы Android, взаимодействует с системными службами для доступа к базовому оборудованию.
Среда выполнения Android (ART)
Среда выполнения Java, предоставляемая AOSP. ART выполняет перевод байт-кода приложения в инструкции для конкретного процессора, которые выполняются средой выполнения устройства.
Уровень аппаратной абстракции (HAL)
HAL — это уровень абстракции со стандартным интерфейсом, который могут реализовать производители оборудования. HAL позволяют Android быть независимым от реализации драйверов нижнего уровня. Использование HAL позволяет реализовать функциональность, не затрагивая и не изменяя систему более высокого уровня. Дополнительную информацию смотрите в обзоре HAL .
Собственные демоны и библиотеки

Собственные демоны на этом уровне включают init , healthd , logd и storaged . Эти демоны напрямую взаимодействуют с ядром или другими интерфейсами и не зависят от реализации HAL в пользовательском пространстве.

Собственные библиотеки этого уровня включают libc , liblog , libutils , libbinder и libselinux . Эти собственные библиотеки взаимодействуют напрямую с ядром или другими интерфейсами и не зависят от реализации HAL на основе пользовательского пространства.

Ядро

Ядро является центральной частью любой операционной системы и взаимодействует с базовым оборудованием устройства. Там, где это возможно, ядро ​​AOSP разделено на аппаратно-независимые модули и модули, зависящие от поставщика. Описание, включая определения, компонентов ядра AOSP, смотрите в Обзоре ядра .

Что дальше?

  • Если вы новичок в AOSP и хотите начать разработку, обратитесь к разделу «Начало работы» .
  • Если вы хотите узнать больше о конкретном уровне AOSP, щелкните имя раздела в левой навигационной панели и начните с обзора этого раздела.