Android переходит на сборочную систему Bazel

Компания Google сообщила о переводе открытой кодовой базы платформы Android (AOSP, Android Open Source Project) на использование сборочного инструментария Bazel вместо текущей системы сборки на основе инструментов Soong, Ninja и Make. Поддержка Bazel уже добавлена в репозиторий Android, но переход на новую систему сборки по умолчанию будет растянут на несколько выпусков платформы для максимального упрощения и прозрачности миграции.

В 2020 и 2021 годах не ожидается заметного изменения рабочих процессов сборки платформы, а поддержка существующих сборочных систем будет сохранена. Для обеспечения постепенной миграции некоторые изменения для упрощения сборки Android уже включены в состав инструментария Bazel, например, уже добавлены возможности для разбора и выполнения сборочных файлов в формате Ninja.

Утверждается, что для платформы Android переход на Bazel позволит повысить гибкость настройки сборочного процесса, улучшить инроспекцию/мониторинг хода сборки и подключения зависимостей, реализовать повторяемые сборки, упростить усложнённые сборочные сценарии, улучшить интеграцию с различными сборочными и тестовыми обработчиками, сократить время сборки.

Для экосистемы Bazel применение в Android расширит число вовлечённых в разработку участников, упростит применение для сборки Android-приложений (в том числе Google намерен открыть код сборочных сценариев своих приложений для Android), улучшит поддержку различных языков программирования, используемых в Android (Rust, Java, Python, Go), предоставит ресурсы для формирования релизов с длительным сроком поддержки и приведёт к расширению и повышению качества документации.

Bazel развивается инженерами из Google и используемого для сборки большинства внутренних проектов данной компании. Проект примечателен высокой скоростью сборки, для достижения которой применяются техники кэширования и распараллеливания процесса сборки. Инструментарий также гарантирует повторяемость сборки, т.е. результат сборки проекта на машине разработчика будет полностью совпадать со сборкой на сторонних системах, таких как серверы непрерывной интеграции. Дополнительная функциональность реализуется через механизм подключения расширений.

В отличие от Make и Ninja в Bazel применяется более высокоуровневый подход к построению правил сборки, при котором вместо определения привязки команд к собираемым файлам производится применение более абстрактных готовых блоков и определение целевых/сборочных платформ. Компоненты проекта описываются в текстовом файле BUILD в форме связки библиотек, исполняемых файлов и тестов, без детализации на уровне отдельных файлов и команд вызова компилятора. В BUILD-файлах обязательно полностью определены все зависимости, на основе которых принимаются решения по пересборке компонентов после внесения изменений (пересобираются только изменившиеся файлы) и распараллеливания процесса сборки.

Источник: http://www.opennet.ru/opennews/art.shtml? num=54080

©  OpenNet