В этом документе содержатся ответы на общие вопросы о платформе Android с открытым исходным кодом (AOSP).
О последней версии Android
Почему я не могу отправить запрос в AOSP-Main?
Вы не можете отправить изменения в aosp-main потому что эта ветка теперь доступна только для чтения.
Где мне следует предложить изменения в AOSP?
Новые изменения следует предлагать в android-latest-release (при использовании Repo) или в ветку ревизии по умолчанию, указанную в манифесте android-latest-release (при использовании Git напрямую). Существующие предлагаемые изменения в других ветках (например, aosp-main ) перемещать не нужно.
Для получения более подробной информации см. раздел «Загрузка изменений для проверки» .
В какую ветку мне следует синхронизироваться?
При использовании Repo выполните синхронизацию с
android-latest-releaseс помощью следующей команды:repo init --partial-clone --no-use-superproject -b android-latest-release -u https://android.googlesource.com/platform/manifestПри использовании Git напрямую синхронизируйтесь с веткой ревизии по умолчанию, указанной в манифесте
android-latest-release.
Дополнительные сведения о синхронизации веток см. в разделе «Инициализация клиента репозитория» .
Будет ли код из android-latest-release объединен с aosp-main?
Нет, код не будет объединен с aosp-main , которая по состоянию на 27 марта 2025 года является веткой только для чтения.
Куда будет загружен код для следующего релиза?
Google отправляет код для следующего релиза в последнюю общедоступную ветку релизов и обновляет манифест android-latest-release , чтобы он указывал на эту ветку.
Будет ли мой запрос на изменение выбран из ветки android-latest-release и добавлен во внутренний репозиторий Gerrit?
После того, как вы загрузите предлагаемое изменение, Google рассмотрит его и, если оно будет принято, добавит его во внутреннюю систему Gerrit.
Как я узнаю, что мой запрос на изменение принят?
Принятые и отобранные изменения отображаются в будущих изменениях, добавленных в ветку релиза на хосте Android, и могут быть синхронизированы с репозиторием с помощью android-latest-release . Механизма уведомлений о принятии или отклонении предложенного изменения нет.
Каков общий порядок действий с момента внесения изменения сторонним участником до его слияния с последней веткой релиза?
Внешний участник предлагает внести изменения в
android-latest-release(при использовании Repo) или в последнюю ветку релиза, указанную в манифестеandroid-latest-release(при использовании Git напрямую).Google проверяет изменения. Если изменения следующие:
Принято, Google выбирает это изменение и объединяет его во внутреннюю ветку разработки.
Не принято, Google не выбирает изменения выборочно.
Внешний участник проверяет наличие своих изменений в репозитории
android-latest-release.
А что, если предложенные мной изменения мне больше не нужны?
Если предлагаемое вами изменение больше не нужно, вы не хотите, чтобы оно было объединено, или знаете, что Google уже рассмотрел это изменение, откажитесь от него, чтобы оно осталось в истории предлагаемых изменений на хосте Android.
Вопросы, касающиеся открытого исходного кода
Зачем Google открыла исходный код Android?
Google запустила AOSP, основываясь на собственном опыте запуска мобильных приложений. Мы хотели обеспечить наличие открытой платформы, доступной для операторов связи, производителей оборудования и разработчиков, чтобы они могли воплощать свои инновационные идеи в жизнь. Мы также хотели избежать централизованной точки отказа, чтобы ни один игрок отрасли не мог ограничивать или контролировать инновации других. Наша главная цель с AOSP — обеспечить максимально широкое и совместимое внедрение программного обеспечения Android с открытым исходным кодом на благо всех.
Что представляет собой Android как проект с открытым исходным кодом?
Google контролирует разработку ядра AOSP и работает над созданием сильных сообществ разработчиков и пользователей. В основном исходный код Android распространяется под разрешительной лицензией Apache License 2.0, а не под лицензией copyleft . Мы выбрали лицензию Apache 2.0, потому что считаем, что она способствует широкому распространению программного обеспечения Android. Подробности см. в разделе «Лицензии» .
Почему именно Google отвечает за Android?
Запуск программной платформы — сложный процесс. Открытость имеет решающее значение для долгосрочного успеха платформы, поскольку она привлекает инвестиции от разработчиков и обеспечивает равные условия конкуренции. Платформа также должна быть привлекательным продуктом для пользователей.
Google выделила необходимые профессиональные инженерные ресурсы, чтобы гарантировать, что Android станет полностью конкурентоспособной программной платформой. Google рассматривает проект Android как полномасштабную операцию по разработке продукта и заключает необходимые деловые соглашения, чтобы обеспечить выход на рынок отличных устройств под управлением Android.
Обеспечивая успех Android среди пользователей, мы способствуем жизнеспособности Android как платформы и как проекта с открытым исходным кодом. В конце концов, кому нужен исходный код неудачного продукта?
Наша цель — обеспечить успешную экосистему вокруг Android. Мы открыли исходный код Android, чтобы любой желающий мог модифицировать и распространять программное обеспечение в соответствии со своими потребностями.
Какова общая стратегия Google в разработке продуктов для Android?
Мы выпускаем отличные устройства на конкурентный рынок. Затем мы внедряем внесенные нами инновации и улучшения в основную платформу в качестве следующей версии.
На практике это означает, что команда разработчиков Android сосредотачивается на небольшом количестве «флагманских» устройств и разрабатывает следующую версию программного обеспечения Android для поддержки запуска этих продуктов. Эти флагманские устройства берут на себя большую часть рисков, связанных с продуктом, и прокладывают путь для широкого сообщества OEM-производителей, которые затем выпускают больше устройств, использующих новые функции. Таким образом, мы гарантируем, что платформа Android развивается в соответствии с потребностями реальных устройств.
Как разрабатывается программное обеспечение для Android?
Каждая версия платформы Android (например, 1.5 или 8.1) имеет соответствующую ветку в дереве открытого исходного кода. Самая последняя ветка считается текущей стабильной версией, на которую указывает манифест android-latest-release . Именно эту ветку производители портируют на свои устройства. Эта ветка всегда поддерживается в пригодном для выпуска состоянии.
Наконец, Google работает над следующей версией платформы Android параллельно с разработкой флагманского устройства.
Почему разработка некоторых частей Android ведётся в частном порядке?
Как правило, на вывод устройства на рынок уходит больше года. И, конечно же, производители устройств стремятся выпускать новейшее программное обеспечение. В то же время разработчики не хотят постоянно отслеживать новые версии платформы при написании приложений. Обе группы испытывают противоречие между желанием выпускать продукты и нежеланием отставать.
Для решения этой проблемы некоторые части следующей версии Android, включая основные API платформы, разрабатываются в отдельной ветке. Эти API и составляют основу следующей версии Android. Наша цель — сосредоточить внимание на текущей стабильной версии исходного кода Android, пока мы создаём следующую версию платформы. Это позволяет разработчикам и производителям оборудования использовать единую версию, не отслеживая незавершённую будущую работу только для того, чтобы идти в ногу со временем.
Когда происходит выпуск исходного кода?
Когда они будут готовы. Выпуск исходного кода — довольно сложный процесс. Некоторые части Android, такие как ядро, разрабатываются в открытом доступе, и этот исходный код всегда доступен. Другие части сначала разрабатываются в закрытом репозитории, и этот исходный код выпускается, когда готова следующая версия платформы.
В некоторых релизах основные API платформы готовы достаточно заблаговременно, чтобы мы могли выложить исходный код для ознакомления до выпуска устройства. В других релизах это невозможно. Во всех случаях мы выпускаем исходный код платформы, когда считаем версию стабильной и когда это позволяет процесс разработки.
Что включает в себя публикация исходного кода новой версии Android?
Выпуск исходного кода новой версии платформы Android — это важный процесс. Сначала программное обеспечение интегрируется в образ системы устройства и проходит различные виды сертификации, включая государственную сертификацию регулирующих органов для регионов, где будут развернуты телефоны. Код также проходит тестирование операторами. Это важный этап процесса, поскольку он помогает выявлять ошибки в программном обеспечении.
После одобрения регулирующими органами и операторами производитель приступает к массовому выпуску устройств, а мы начинаем публиковать исходный код.
Одновременно с массовым выпуском команда Google начинает ряд работ по подготовке к выпуску с открытым исходным кодом. Эти работы включают в себя внесение окончательных изменений в API, обновление документации (например, для отражения любых изменений, внесенных в ходе квалификационного тестирования), подготовку SDK для новой версии и публикацию информации о совместимости с платформами.
Наша юридическая команда дает окончательное разрешение на выпуск кода в открытый доступ. Подобно тому, как участники проектов с открытым исходным кодом обязаны подписать Лицензионное соглашение, подтверждающее их права интеллектуальной собственности на внесенный вклад, Google должен убедиться, что исходный код имеет право на внесение изменений.
С момента начала массового производства процесс выпуска программного обеспечения обычно занимает около месяца, поэтому выпуск исходного кода часто происходит примерно в то же время, когда устройства попадают к пользователям.
Какова взаимосвязь между AOSP и программой совместимости Android?
AOSP поддерживает программное обеспечение Android и разрабатывает новые версии. Поскольку это программное обеспечение с открытым исходным кодом, его можно использовать для любых целей, включая разработку устройств, несовместимых с другими устройствами, основанными на том же исходном коде.
Функция Программы совместимости Android заключается в определении базовой реализации Android, совместимой с приложениями сторонних разработчиков. Устройства, совместимые с Android, имеют право участвовать в экосистеме Android, включая Google Play; устройства, не соответствующие требованиям совместимости, находятся вне этой экосистемы.
Иными словами, программа совместимости Android — это способ отделить устройства, совместимые с Android, от устройств, которые просто используют производные исходного кода. Мы приветствуем любое использование исходного кода Android, но для участия в экосистеме Android устройство должно быть идентифицировано как совместимое с Android программой.
Как я могу внести свой вклад в разработку Android?
Вы можете сообщать об ошибках, писать приложения для Android или вносить свой вклад в исходный код AOSP.
Существуют ограничения на виды принимаемого нами кода. Например, кто-то может захотеть внести свой вклад в виде альтернативного API приложения, такого как полноценная среда разработки на C++. Мы отклоним такой вклад, поскольку Android поощряет запуск приложений в среде выполнения ART. Аналогично, мы не будем принимать такие вклады, как библиотеки, распространяемые по лицензиям GPL или LGPL, которые несовместимы с нашими целями лицензирования.
Мы призываем всех, кто заинтересован в участии в разработке исходного кода, связаться с нами через каналы, указанные в сообществе Android, прежде чем начинать какую-либо работу. Подробности см. в разделе «Участие в разработке» .
Как мне стать участником команды разработчиков Android?
В AOSP нет понятия «коммиттера». Все изменения (включая изменения, внесенные сотрудниками Google) проходят через веб-систему Gerrit, которая является частью процесса разработки Android. Эта система работает в тандеме с системой управления исходным кодом Git для удобного управления изменениями в исходном коде.
Назначенный утверждающий должен рассмотреть и утвердить все предложенные изменения. Как правило, утверждающими являются сотрудники Google, но эти же лица несут ответственность за все представленные изменения, независимо от их происхождения.
Подробности см. в разделе «Отправка исправлений» .