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

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

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

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

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

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

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

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

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

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

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

Ядро

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

Что дальше?

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