Android переходит на сборочную систему Bazel
13 ноября 2020 года
Компания 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-файлах обязательно полностью определены все зависимости, на основе которых принимаются решения по пересборке компонентов после внесения изменений (пересобираются только изменившиеся файлы) и распараллеливания процесса сборки.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.