Google se compromete a promover la equidad racial para las comunidades negras. Ver cómo.

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 o macOS; por el momento, no se permite la compilación en Windows.

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)

Necesitas una versión de Ubuntu de 64 bits.

sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 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 gcc-multilib g++-multilib libc6-dev-i386 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 g++-multilib 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 g++-multilib 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.

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.

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

En una instalación predeterminada, macOS se ejecuta en un sistema de archivos que mantiene la distinción entre mayúsculas y minúsculas, pero que no distingue entre ellas. Git no admite este tipo de sistema de archivos, que provoca que algunos comandos de Git (como git status) no se comporten con normalidad. Por este motivo, recomendamos que siempre trabajes con los archivos de origen de AOSP en un sistema de archivos que distinga entre mayúsculas y minúsculas. Esto se puede realizar de manera sencilla mediante una imagen de disco, como se describe a continuación.

Cuando el sistema de archivos apropiado está disponible, es muy sencillo compilar la rama de master en un entorno de macOS moderno. Las ramas anteriores requieren algunos SDK y herramientas adicionales.

Cómo crear una imagen de disco que distinga entre mayúsculas y minúsculas

Puedes crear un sistema de archivos que distinga entre mayúsculas y minúsculas dentro de tu entorno de macOS existente mediante una imagen de disco. Para crear la imagen, inicia la Utilidad de Discos y selecciona Imagen nueva. Necesitas un tamaño mínimo de 25 GB para completar la compilación. Cuanto más espacio haya, mejor será para el crecimiento futuro. El uso moderado de imágenes ahorra espacio y permite el crecimiento según sea necesario. Como formato del volumen, selecciona distinción entre mayúsculas y minúsculas, registrado.

También puedes crear el sistema de archivos a partir de un shell mediante el siguiente comando:

hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/android.dmg

Se crea un archivo .dmg (o quizás un archivo .dmg.sparseimage) que, cuando se activa, actúa como una unidad con el formato necesario para el desarrollo de Android.

Si necesitas un volumen mayor más adelante, puedes cambiar el tamaño de la imagen dispersa mediante el siguiente comando:

hdiutil resize -size <new-size-you-want>g ~/android.dmg.sparseimage

En el caso de una imagen de disco con el nombre android.dmg almacenada en tu directorio principal, puedes agregar funciones de ayuda a ~/.bash_profile:

  • Para activar la imagen cuando ejecutas mountAndroid, haz lo siguiente:
    # mount the android file image
    mountAndroid() { hdiutil attach ~/android.dmg -mountpoint /Volumes/android; }
  • Para desmontarlo cuando ejecutas umountAndroid, haz lo siguiente:
    # unmount the android file image
    umountAndroid() { hdiutil detach /Volumes/android; }

Después de activar el volumen de android, puedes trabajar ahí directamente. Puedes expulsarlo (desactivarlo) tal como lo harías con una unidad externa.

Cómo instalar Xcode y otros paquetes

  1. Instala las herramientas de línea de comandos de Xcode:
    xcode-select --install
    En el caso de las versiones anteriores de macOS (10.8 o versiones anteriores), debes instalar Xcode desde el sitio para desarrolladores de Apple. Si no estás registrado como desarrollador de Apple, debes crear un Apple ID para la descarga.
  2. Instala MacPorts o Homebrew para la administración de paquetes.
  3. Asegúrate de que el directorio asociado esté en tu ruta dentro del archivo ~/.bash_profile:
    1. MacPorts: /opt/local/bin debe aparecer antes de/usr/bin:
      export PATH=/opt/local/bin:$PATH
    2. Homebrew: /usr/local/bin:
      export PATH=/usr/local/bin:$PATH
    3. Para MacPorts, escribe:
      POSIXLY_CORRECT=1 sudo port install git gnupg
    4. Para Homebrew, escribe:
      brew install git gnupg2

    Cómo establecer un límite de descriptor de archivo

    En macOS, el límite predeterminado del número de descriptores de archivos abiertos simultáneos es demasiado bajo y un proceso de compilación de gran paralelismo podría superar este límite. A fin de aumentar el límite, agrega las siguientes líneas a tu ~/.bash_profile:

    # set the number of open files to be 1024
    ulimit -S -n 1024

    A continuación: Cómo descargar la fuente

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