Android Open Source Project (AOSP) — это общедоступный и модифицируемый исходный код Android. Любой желающий может загрузить и модифицировать AOSP для своего устройства. AOSP предоставляет полную и полностью функциональную реализацию мобильной платформы Android.
Существует два уровня совместимости для устройств, реализующих AOSP: совместимость с AOSP и совместимость с Android. Устройство, совместимое с AOSP, должно соответствовать списку требований в документе определения совместимости (CDD) . Устройство, совместимое с Android, должно соответствовать списку требований в CDD и требованиям к программному обеспечению поставщика (VSR), а также тестам, таким как Vendor Test Suite (VTS) и Compatibility Test Suite (CTS) . Для получения дополнительной информации о совместимости с Android обратитесь к программе совместимости Android .
Архитектура АОСП
Программный стек для AOSP содержит следующие слои:
Рисунок 1. Архитектура программного стека AOSP.
Ниже приведен список определений терминов, используемых на рисунке 1:
- Android-приложение
- Приложение, созданное исключительно с использованием API Android. Google Play Store широко используется для поиска и загрузки приложений Android, хотя есть и много других альтернатив. В некоторых случаях производитель устройства может захотеть предварительно установить приложение Android для поддержки основных функций устройства. Если вы заинтересованы в разработке приложений Android, обратитесь к developers.android.com .
- Привилегированное приложение
- Приложение, созданное с использованием комбинации API Android и системы. Эти приложения должны быть предварительно установлены как привилегированные приложения на устройстве.
- Приложение производителя устройства
- Приложение, созданное с использованием комбинации API Android, системного API и прямого доступа к реализации фреймворка Android. Поскольку производитель устройства может напрямую обращаться к нестабильным API в фреймворке Android, эти приложения должны быть предустановлены на устройстве и могут обновляться только при обновлении системного программного обеспечения устройства.
- Системный API
- System API представляет API Android, доступные только партнерам и OEM-производителям для включения в пакетные приложения. Эти API помечены как @SystemApi в исходном коде.
- API-интерфейс Android
- Android API — это общедоступный API для сторонних разработчиков приложений Android. Для получения информации об Android API см. Справочник по Android API .
- Android-фреймворк
- Группа классов Java, интерфейсов и другого предварительно скомпилированного кода, на основе которого создаются приложения. Части фреймворка общедоступны посредством использования API Android. Другие части фреймворка доступны только 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, щелкните название раздела в левой навигационной панели и начните с обзора этого раздела.