Разработчики Google кто стоит за разработкой Android, дал узнать через объявление, что Проект движется Android с открытым исходным кодом (AOSP) для использования системы сборки Bazel вместо нынешней системы компиляции Soong, Ninja и Make.
В репозиторий Android уже добавлена поддержка Bazel, Но переход в новую систему сборки по умолчанию se будет распространяться на несколько версий платформа, чтобы сделать миграцию максимально простой и прозрачной.
В 2020 и 2021 годах существенных изменений не ожидается в рабочих процессах строительства платформ, и поддержка существующих строительных систем будет сохранена.
Чтобы разрешить постепенную миграцию, некоторые изменения для упрощения сборки Android уже включены в Базель, например, возможность анализировать и запускать файлы сборки в формате Ninja.
Утверждается, что для платформы Android, переход на Bazel повысит гибкость настройки процесса сборки, Это улучшит самоанализ / мониторинг прогресса сборки и подключения зависимостей, реализует повторяемые сборки, упростит сложные сценарии сборки, улучшит интеграцию с различными обработчиками сборки и тестирования и сократит время сборки.
Переход на Bazel позволит AOSP:
Обеспечение большей гибкости для настройки компиляции AOSP (лучшая поддержка условных выражений)
Разрешить более глубокий анализ прогресса сборки и зависимостей AOSP
Включить правильные и воспроизводимые (водонепроницаемые) сборки AOSP
Внедрить механизм конфигурации, который упростит сборку AOSP.
Обеспечить дальнейшую интеграцию строительных и испытательных работ
Объедините все это, чтобы сократить время сборки и улучшить впечатления
Преимущества этой миграции для сообщества Bazel:В Bazel ведутся значительные инвестиции для поддержки сборок платформы Android.
Экосистема Bazel и расширение сообщества на начальном этапе включают десятки тысяч разработчиков платформы Android, производителей оригинального оборудования (OEM) для телефонов Android и поставщиков микросхем.
Правила Google Bazel для создания приложений Android будут иметь открытый исходный код, использоваться в AOSP и поддерживаться Google в партнерстве с сообществом Android / Bazel.
Лучшая совместимость с Bazel для создания приложений для Android
Лучшая поддержка правил для других языков, используемых для создания платформы Android (Rust, Java, Python, Go и т. Д.)
Сильная поддержка версий Bazel Long Term Support (LTS), приносящая пользу расширенному сообществу Bazel
Улучшенная документация (учебные пособия и справочная информация)
Экосистема Базел на Android расширит количество вовлеченных участников в разработке, упростит приложение для создания приложений для Android (в том числе Google намеревается открыть код для создания сценариев для своих приложений Android), он улучшит поддержку различных языков программирования, используемых в Android (Rust, Java, Python, Go), он предоставит ресурсы для создания длительных версий длинных версий и будет привести к более качественной и обширной документации.
Базель разработан инженерами Google и используется для создания большинства внутренних проектов компании. Проект отличается высокой скоростью строительства, для чего используются методы кеширования и распараллеливания процесса построения.
Инструменты тоже обеспечить повторяемую сборкуДругими словами, результат построения проекта на машине разработчика будет точно таким же, как и при построении на сторонних системах, таких как серверы непрерывной интеграции. Дополнительная функциональность реализована через механизм подключения расширений.
В отличие от Make и Ninja, Bazel использует подход более высокого уровня. для создания правил компиляции, которые вместо определения командных привязок для компилируемых файлов используют более абстрактные предварительно созданные блоки и определяют целевые платформы / платформы сборки.
Компоненты проекта описаны в текстовом файле BUILD в виде пакета библиотек, исполняемых файлов и тестов, без детализации на уровне отдельных файлов и команд для вызова компилятора.
В файлах BUILD все зависимости должны быть полностью определены, на основе которых принимаются решения о перекомпоновке компонентов после внесения изменений (перестраиваются только измененные файлы) и распараллеливании процесса сборки.
источник: https://developers.googleblog.com