Android Open Source Project (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, посетите сайт developers.android.com.
- Привилегированное приложение
- Приложение, созданное с использованием API Android и системных API. Они должны быть предустановлены на устройстве как привилегированные.
- Приложение от производителя устройства
- Приложение, созданное с использованием Android API, системного API и прямого доступа к реализации фреймворка Android. Поскольку производитель устройства может напрямую получить доступ к нестабильным API в рамках Android, такие приложения должны быть предустановлены на устройстве и могут обновляться только при обновлении системного ПО устройства.
- Системный API
- System 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 Runtime (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, нажмите на название раздела на панели навигации слева и начните с обзора этого раздела.