Управление программным обеспечением Android

Проект Android с открытым исходным кодом (AOSP) поддерживает полный стек программного обеспечения, который могут портировать OEM-производители и другие разработчики устройств и запускать на их собственном оборудовании. Чтобы поддерживать качество Android, Google привлек штатных инженеров, менеджеров по продуктам, дизайнеров пользовательского интерфейса, тестировщиков качества и всех других должностей, необходимых для вывода современных устройств на рынок.

Соответственно, мы поддерживаем ряд строк кода, чтобы четко отделить текущую стабильную версию Android от нестабильной экспериментальной работы. Мы включаем администрирование открытого исходного кода и поддержку кодовых линий Android в более широкий цикл разработки продукта.

Управление кодом AOSP

На диаграмме ниже показаны концепции управления и выпуска кода AOSP.

кодовая диаграмма
Рисунок 1. Код и версии AOSP
  1. В любой момент доступна последняя версия платформы Android. Обычно это принимает форму ветки дерева.
  2. Разработчики устройств и участники работают с последней версией, исправляя ошибки, запуская новые устройства, экспериментируя с новыми функциями и так далее.
  3. Параллельно Google работает над следующей версией платформы и платформы Android в соответствии с потребностями и целями продукта. Мы разрабатываем следующую версию Android, работая с партнером по устройствам над флагманским устройством, чьи характеристики выбраны для продвижения Android в том направлении, в котором, по нашему мнению, она должна развиваться.
  4. Когда n+1-я версия готова, она публикуется в дереве общедоступных исходных кодов и становится новейшим выпуском.

Условия и предостережения

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

Частные кодовые строки

Приведенная выше стратегия управления исходным кодом включает в себя кодовую строку, которую Google сохраняет в тайне, чтобы сосредоточить внимание на текущей общедоступной версии Android.

OEM-производители и другие производители устройств, естественно, хотят поставлять устройства с последней версией Android. Точно так же разработчики приложений не хотят иметь дело с большим количеством версий платформы, чем необходимо. Между тем, Google сохраняет за собой ответственность за стратегическое направление Android как платформы и продукта. Наш подход ориентирован на небольшое количество флагманских устройств для реализации функций и обеспечения защиты интеллектуальной собственности, связанной с Android.

В результате Google часто владеет конфиденциальной информацией от третьих лиц и должен воздерживаться от раскрытия конфиденциальных функций до тех пор, пока не будут обеспечены соответствующие меры защиты. Кроме того, существует реальный риск для платформы, если одновременно существует слишком много версий платформы. По этим причинам мы структурировали проект с открытым исходным кодом (включая вклад третьих сторон), чтобы сосредоточиться на текущей общедоступной стабильной версии Android. Глубокая разработка следующей версии платформы ведется в частном порядке до тех пор, пока она не станет официальным выпуском.

Мы признаем, что многие авторы не согласны с таким подходом, и уважаем их точки зрения. Тем не менее, мы считаем, что это лучший подход, и именно его мы решили реализовать для Android.