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

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 состоит из следующих уровней:

архитектура стека ПО 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, нажмите на название раздела на панели навигации слева и начните с обзора этого раздела.