Проект Android с открытым исходным кодом (AOSP) поддерживает полный стек программного обеспечения, которое OEM-производители и другие разработчики устройств могут портировать и запускать на собственном оборудовании. Чтобы поддерживать качество Android, Google выделил штатных инженеров, менеджеров по продуктам, дизайнеров пользовательского интерфейса, тестировщиков по обеспечению качества и всех других должностей, необходимых для вывода современных устройств на рынок.
Соответственно, мы поддерживаем ряд строк кода, чтобы четко отделить текущую стабильную версию Android от нестабильной экспериментальной работы. Мы объединяем администрирование открытого исходного кода и обслуживание кодовых линий Android в более крупный цикл разработки продукта.
Управление кодом AOSP
На приведенной ниже диаграмме показаны концепции управления кодом и выпусками AOSP.
- В любой момент существует последняя версия платформы Android. Обычно это принимает форму ветки на дереве.
- Разработчики устройств и участники работают с последним выпуском, исправляют ошибки, запускают новые устройства, экспериментируют с новыми функциями и т. д.
- Параллельно Google работает над следующей версией платформы и фреймворка Android в соответствии с потребностями и целями продукта. Мы разрабатываем следующую версию Android, работая с партнером по устройствам над флагманским устройством, характеристики которого выбраны для продвижения Android в том направлении, в котором, по нашему мнению, она должна развиваться.
- Когда n+1-я версия готова, она публикуется в общедоступном дереве исходных кодов и становится новым последним выпуском.
Условия и предостережения
- Релиз соответствует официальной версии платформы Android, например 1.5 или 8.1. Выпуск платформы соответствует версии в поле
SdkVersion
файловAndroidManifest.xml
и определяется вframeworks/base/api
в дереве исходного кода. - Восходящий проект — это проект с открытым исходным кодом, из которого стек Android извлекает код. В дополнение к таким проектам, как ядро Linux и WebKit, мы продолжаем переводить некоторые полуавтономные проекты Android, такие как ART, инструменты Android SDK и Bionic, для работы в качестве вышестоящих проектов. Как правило, эти проекты полностью разрабатываются в публичном дереве. Для некоторых вышестоящих проектов разработчики вносят непосредственный вклад в вышестоящий проект. Подробнее см. в разделе Upstream-проекты . В обоих случаях моментальные снимки периодически добавляются в релизы.
- Во все времена кодовая строка выпуска (которая может состоять из более чем одной ветки в git) считается единственным каноническим исходным кодом для данной версии платформы Android. OEM-производители и другие группы, занимающиеся сборкой устройств, должны извлекать только из ветки выпуска.
- Экспериментальные кодовые строки устанавливаются для сбора изменений от сообщества, чтобы их можно было повторять с прицелом на стабильность.
- Изменения, которые оказались стабильными, в конечном итоге переносятся в ветку релиза. Это относится только к исправлениям ошибок, улучшениям приложений и другим изменениям, которые не влияют на API платформы.
- Изменения вносятся в ветки релиза из вышестоящих проектов (включая вышестоящие проекты Android) по мере необходимости.
- Версия n+1 (следующая основная версия API фреймворка и платформы) разрабатывается Google внутри компании. Подробнее см. в разделе Частные кодовые строки .
- Изменения извлекаются из исходной, выпускной и экспериментальной ветвей в частную ветвь Google по мере необходимости.
- Когда API-интерфейсы платформы для следующей версии стабилизированы и полностью протестированы, Google прекращает выпуск следующей версии платформы (в частности, новой
SdkVersion
). Это соответствует внутренней кодовой строке, которая становится общедоступной веткой выпуска, и новой текущей кодовой строке платформы. - При вырезании новой версии платформы одновременно создается соответствующая экспериментальная кодовая строка.
Частные кодовые строки
Приведенная выше стратегия управления исходным кодом включает кодовую строку, которую Google держит в секрете, чтобы привлечь внимание к текущей общедоступной версии Android.
OEM-производители и другие производители устройств, естественно, хотят поставлять устройства с последней версией Android. Точно так же разработчики приложений не хотят иметь дело с большим количеством версий платформы, чем необходимо. Тем временем Google сохраняет за собой ответственность за стратегическое направление развития Android как платформы и продукта. Наш подход фокусируется на небольшом количестве флагманских устройств для управления функциями при обеспечении защиты интеллектуальной собственности, связанной с Android.
В результате Google часто получает конфиденциальную информацию от третьих лиц и должна воздерживаться от раскрытия конфиденциальных функций до тех пор, пока не будут обеспечены соответствующие меры защиты. Кроме того, существуют реальные риски для платформы, если одновременно существует слишком много версий платформы. По этим причинам мы структурировали проект с открытым исходным кодом (включая вклад третьих сторон), чтобы сосредоточиться на общедоступной стабильной версии Android. Глубокая разработка следующей версии платформы происходит в частном порядке до тех пор, пока она не будет готова стать официальным релизом.
Мы признаем, что многие участники не согласны с таким подходом, и уважаем их точку зрения. Тем не менее, это подход, который мы считаем лучшим, и именно его мы решили реализовать для Android.