Проект 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
Программный стек для AOSP содержит следующие слои:
Рисунок 1. Архитектура программного стека AOSP.
Ниже приведен список определений терминов, используемых на рисунке 1:
- Android-приложение
- Приложение, созданное исключительно с использованием API Android. Google Play Store широко используется для поиска и загрузки приложений для Android, хотя существует множество других альтернатив. В некоторых случаях производитель устройства может предустанавливать приложение Android для поддержки основных функций устройства. Если вы заинтересованы в разработке приложений для Android, посетите сайт developer.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, интерфейсов и другого предварительно скомпилированного кода, на основе которого создаются приложения. Некоторые части фреймворка доступны публично через 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, щелкните название раздела в левой навигационной панели и начните с обзора этого раздела.