Cómo establecer un entorno de compilación

En esta sección, se describe cómo configurar tu entorno de trabajo local para compilar los archivos de origen de Android. Debes usar Linux, ya que no se admite la compilación en MacOS o Windows. Además, ten en cuenta el cambio importante en el objeto binario /usr/bin/python.

Para obtener una descripción general de todo el proceso de revisión y actualización del código, consulta La vida de un parche.

Cómo elegir una rama

Algunos requisitos del entorno de compilación se determinan en función de la versión del código fuente que tienes pensado compilar. Si deseas obtener una lista completa de las ramas disponibles, consulta Números de compilación. También puedes descargar y compilar el código fuente más reciente (llamado master); en ese caso, solo debes omitir la especificación de la rama cuando inicializas el repositorio.

Después de seleccionar una rama, sigue las instrucciones apropiadas que se muestran a continuación para configurar tu entorno de compilación.

Cómo configurar un entorno de compilación de Linux

Estas instrucciones se aplican a todas las ramas, incluido master.

La compilación de Android se prueba de manera habitual a nivel interno en las pruebas de Ubuntu LTS (14.04) y Debian. La mayoría de las otras distribuciones deben tener disponibles las herramientas de compilación requeridas.

En el caso de Gingerbread (2.3.x) y versiones posteriores, como la rama de master, se requiere un entorno de 64 bits. Las versiones anteriores se pueden compilar en sistemas de 32 bits.

Cómo instalar los paquetes requeridos (Ubuntu 18.04 y versiones posteriores)

Necesitas una versión de Ubuntu de 64 bits.

sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

Cómo instalar los paquetes requeridos (Ubuntu 14.04)

Necesitas una versión de Ubuntu de 64 bits (se recomienda la versión 14.04).

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip

Cómo instalar los paquetes requeridos (Ubuntu 12.04)

Puedes usar Ubuntu 12.04 para compilar versiones anteriores de Android. La versión 12.04 no se admite en master ni en las actualizaciones recientes.

sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

Cómo instalar los paquetes requeridos (Ubuntu 10.04 a 11.10)

Ya no se admite la compilación en Ubuntu 10.04 a 11.10, aunque puede ser útil para compilar versiones anteriores de AOSP.

sudo apt-get install git gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgl1-mesa-dev mingw32 tofrodos python-markdown libxml2-utils xsltproc

En Ubuntu 10.10:

sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so

En Ubuntu 11.10:

sudo apt-get install libx11-dev:i386

Cómo configurar el acceso USB

Instala un conjunto predeterminado de reglas de udev mantenido por la comunidad para todos los dispositivos de Android. Para ello, sigue las instrucciones sobre Cómo configurar un dispositivo para desarrollo.

Cómo usar un directorio de salida independiente

De manera predeterminada, el resultado de cada compilación se almacena en el subdirectorio de out/ del árbol de fuentes con el que coincide. Puedes anular esta opción si exportas la variable de entorno OUT_DIR. Por ejemplo:

export OUT_DIR=out_mytarget

Esto hará que el resultado de la compilación se almacene en el subdirectorio de out_mytarget/ del árbol de fuentes. Cuando usas el mismo árbol de fuentes a fin de compilar para varios destinos, se recomienda usar un OUT_DIR separado para cada uno de ellos.

En algunas máquinas con varios dispositivos de almacenamiento, las compilaciones son más rápidas cuando almacenan los archivos de origen y el resultado en volúmenes por separado. Si deseas mejorar el rendimiento, el resultado se puede almacenar en un sistema de archivos optimizado para la velocidad en lugar de la potencia ante fallas, ya que todos los archivos se pueden regenerar si el sistema de archivos está dañado.

Para configurar esta función, exporta la variable de OUT_DIR_COMMON_BASE a fin de que apunte a la ubicación en la que deseas que se almacenen tus directorios de salida.

export OUT_DIR_COMMON_BASE=<path-to-your-out-directory>

El directorio de salida de cada árbol de fuentes por separado lleva el nombre del directorio que contiene el árbol de fuentes. Por ejemplo, si tienes árboles de fuentes /source/master1 y /source/master2, y si OUT_DIR_COMMON_BASE se establece en /output, los directorios de salida son /output/master1 y /output/master2.

Evita tener varios árboles de fuentes almacenados en directorios con el mismo nombre, ya que los árboles de fuentes terminarían compartiendo un directorio de resultado y los resultados serían impredecibles. Esto solo se admite en Jelly Bean (4.1) y versiones posteriores, incluida la rama master.

A continuación: Cómo descargar la fuente

¡Tu entorno de compilación está listo! Continúa con la descarga de la fuente.