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

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

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

Архитектура АОСП

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

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

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

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

Android-приложение
Приложение, созданное исключительно с использованием Android API. Магазин Google Play широко используется для поиска и загрузки приложений для Android, хотя существует множество других альтернатив. В некоторых случаях производитель устройства может захотеть предварительно установить приложение Android для поддержки основных функций устройства. Если вы заинтересованы в разработке приложений для Android, посетите сайт developer.android.com.
Привилегированное приложение
Приложение, созданное с использованием комбинации Android и системных API. Эти приложения должны быть предварительно установлены на устройстве как привилегированные приложения.
Приложение производителя устройства
Приложение, созданное с использованием комбинации Android API, системного API и прямого доступа к реализации платформы Android. Поскольку производитель устройства может напрямую обращаться к нестабильным API-интерфейсам в среде Android, эти приложения должны быть предварительно установлены на устройстве и могут обновляться только при обновлении системного программного обеспечения устройства.
Системный API
Системный API представляет API Android, доступные только партнерам и OEM-производителям для включения в связанные приложения. Эти API помечены как @SystemApi в исходном коде.
Android-API
Android API — это общедоступный API для сторонних разработчиков приложений для Android. Сведения об Android API см. в справочнике по Android API .
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, щелкните имя раздела в левой панели навигации и начните с обзора этого раздела.