Android se traslada al sistema de compilación Bazel

noviembre 13, 2020 , 0 Comments

Los desarrolladores de Google que están detrás del desarrollo de Android, dieron a conocer mediante un anunció que está moviendo el Proyecto de código abierto de Android (AOSP) para usar el sistema de compilación Bazel en lugar del actual sistema de compilación Soong, Ninja y Make.

La compatibilidad con Bazel ya se ha agregado al repositorio de Android, pero la transición al nuevo sistema de compilación de forma predeterminada se extenderá a través de múltiples versiones de plataforma para que la migración sea lo más fácil y transparente posible.

En 2020 y 2021, no se esperan cambios significativos en los flujos de trabajo de construcción de plataformas, y se mantendrá el soporte para los sistemas de construcción existentes.

Para permitir una migración gradual, algunos cambios para simplificar las compilaciones de Android ya están incluidos en Bazel, como la capacidad de analizar y ejecutar archivos de compilación con formato Ninja.

Se argumenta que para la plataforma Android, cambiar a Bazel aumentará la flexibilidad de configurar el proceso de compilación, mejorará la introspección / monitoreo del progreso de compilación y la conexión de dependencias, implementará compilaciones repetibles, simplificará scripts de compilación complejos, mejorará la integración con varios manejadores de compilación y prueba, y reducirá el tiempo de compilación.

La migración a Bazel permitirá que AOSP:

Proporcionar más flexibilidad para configurar la compilación AOSP (mejor soporte para condicionales)
Permitir una mayor introspección sobre el progreso y las dependencias de la compilación AOSP
Habilitar compilaciones AOSP correctas y reproducibles (herméticas)
Introducir un mecanismo de configuración que reducirá la complejidad de las compilaciones de AOSP
Permitir una mayor integración de las actividades de construcción y prueba
Combine todos estos para impulsar mejoras significativas en el tiempo de construcción y la experiencia
Los beneficios de esta migración a la comunidad de Bazel son:

Inversión significativa en curso en Bazel para respaldar las compilaciones de la plataforma Android
Expansión del ecosistema y la comunidad de Bazel para incluir, inicialmente, a decenas de miles de desarrolladores de la plataforma Android y fabricantes de equipos originales (OEM) de teléfonos Android y proveedores de chips.
Las reglas de Bazel de Google para la creación de aplicaciones de Android serán de código abierto, se utilizarán en AOSP y serán mantenidas por Google en asociación con la comunidad de Android / Bazel.
Mejor compatibilidad con Bazel para crear aplicaciones de Android
Mejor soporte de reglas para otros lenguajes utilizados para construir la plataforma Android (Rust, Java, Python, Go, etc.)
Fuerte soporte para las versiones de Bazel Long Term Support (LTS) , que beneficia a la comunidad ampliada de Bazel
Documentación mejorada (tutoriales y referencia)

El ecosistema de Bazel en Android ampliará el número de participantes involucrados en el desarrollo, simplificará la aplicación para construir aplicaciones de Android (incluido Google tiene la intención de abrir el código para construir scripts para sus aplicaciones de Android), mejorará el soporte para varios lenguajes de programación usados ​​en Android (Rust, Java, Python, Go), proporcionará recursos para crear versiones de larga duración y conducirá a una documentación mejor y más amplia.

Bazel es desarrollado por ingenieros de Google y se utiliza para construir la mayoría de los proyectos internos de la empresa. El proyecto destaca por su alta velocidad de construcción, para lo cual se utilizan técnicas de almacenamiento en caché y paralelización del proceso de construcción.

Las herramientas también garantizan un montaje repetible, es decir el resultado de construir el proyecto en la máquina del desarrollador será exactamente el mismo que construir en sistemas de terceros, como servidores de integración continua. La funcionalidad adicional se implementa a través del mecanismo para conectar extensiones.

A diferencia de Make y Ninja, Bazel adopta un enfoque de nivel superior para crear reglas de compilación que, en lugar de definir enlaces de comando para los archivos que se están compilando, utiliza bloques preconstruidos más abstractos y define plataformas de destino/compilación.

Los componentes del proyecto se describen en el archivo de texto BUILD en forma de un paquete de bibliotecas, archivos ejecutables y pruebas, sin detallar a nivel de archivos individuales y comandos para llamar al compilador.

En los archivos BUILD, todas las dependencias deben estar completamente definidas, sobre la base de las cuales se toman las decisiones para reconstruir los componentes después de realizar cambios (solo se reconstruyen los archivos modificados) y paralelizar el proceso de construcción.

Fuente: https://developers.googleblog.com


Some say he’s half man half fish, others say he’s more of a seventy/thirty split. Either way he’s a fishy bastard.