Проект Android с открытым исходным кодом (AOSP) — это общедоступный и изменяемый исходный код Android. Любой может загрузить и изменить AOSP для своего устройства. AOSP обеспечивает полную и полнофункциональную реализацию мобильной платформы Android.
Существует два уровня совместимости устройств, реализующих AOSP: совместимость AOSP и совместимость с Android. AOSP-совместимое устройство должно соответствовать списку требований в Документе определения совместимости (CDD) . Android-совместимое устройство должно соответствовать списку требований в CDD и требованиях к программному обеспечению поставщика (VSR), а также тестам, например, в наборе тестов поставщика (VTS) и наборе тестов совместимости (CTS) . Дополнительную информацию о совместимости Android см. в программе совместимости Android .
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, щелкните имя раздела в левой навигационной панели и начните с обзора этого раздела.