Establecimiento de un entorno de compilación
En esta sección se describe cómo configurar el entorno de trabajo local para crear los archivos de origen de Android. Debe usar Linux o macOS; actualmente no se admite la creación en Windows.
Para obtener una descripción general de todo el proceso de revisión y actualización de código, consulte Vida de un parche.
Elegir una rama
Algunos requisitos para el entorno de compilación vienen determinados por la versión del código fuente que se va a compilar. Para obtener una lista completa de las ramas disponibles, consulte Números de compilación. También puede elegir descargar y compilar el código fuente más reciente (llamado master
), en cuyo caso simplemente omite la especificación de la rama cuando inicializa el repositorio.
Después de seleccionar una rama, siga las instrucciones adecuadas a continuación para configurar su entorno de compilación.
Configurar un entorno de construcción de Linux
Estas instrucciones se aplican a todas las ramas, incluyendo master
.
La compilación de Android se prueba rutinariamente en casa en Ubuntu LTS (14.04) y Debian testing. La mayoría de las demás distribuciones deben tener las herramientas de compilación necesarias disponibles.
Para Pan de Jengibre (2.3.x) y versiones superiores, incluida la rama master
, se requiere un entorno de 64 bits. Las versiones anteriores se pueden compilar en sistemas de 32 bits.
Instalación de paquetes requeridos (Ubuntu 18.04)
Necesita 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
Instalación de paquetes requeridos (Ubuntu 14.04)
Necesita una versión de 64 bits de Ubuntu (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
Instalación de paquetes requeridos (Ubuntu 12.04)
Puedes usar Ubuntu 12.04 para crear versiones anteriores de Android. La versión 12.04 no es compatible con master
ni con versiones recientes.
Ya no se admite la instalación de paquetes necesarios (Ubuntu 10.04-11.10)
La compilación en Ubuntu 10.04-11.10, pero 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
Configurar el acceso USB
Instale un conjunto predeterminado mantenido por la comunidad de reglas udev
para todos los dispositivos Android siguiendo las instrucciones para configurar un dispositivo para desarrollo.
Usando un directorio de salida independiente
De forma predeterminada, la salida de cada compilación se almacena en el subdirectorio out/
del árbol de fuentes coincidente.
En algunas máquinas con varios dispositivos de almacenamiento, las compilaciones son más rápidas al almacenar los archivos de origen y la salida en volúmenes separados. Para un rendimiento adicional, la salida se puede almacenar en un sistema de archivos optimizado para la velocidad en lugar de la robustez de bloqueo, porque todos los archivos se pueden regenerar si el sistema de archivos está dañado.
Para configurar esto, exporte la variable OUT_DIR_COMMON_BASE
para apuntar a la ubicación donde se almacenarán los directorios de salida.
export OUT_DIR_COMMON_BASE=<path-to-your-out-directory>
El directorio de salida para cada árbol de fuentes separado lleva el nombre del directorio que contiene el árbol de fuentes. Por ejemplo, si usted tiene fuente árboles /source/master1
y /source/master2
y si OUT_DIR_COMMON_BASE
a /output
, los directorios de salida son /output/master1
y /output/master2
.
Evite tener varios árboles de fuentes almacenados en directorios que tengan el mismo nombre, ya que los árboles de fuentes terminarían compartiendo un directorio de salida, con resultados impredecibles. Esto solo es compatible con Jelly Bean (4.1) y versiones posteriores, incluida la rama master
.
Configuración de un entorno de compilación de macOS
En una instalación predeterminada, macOS se ejecuta en un sistema de archivos que preserva mayúsculas y minúsculas pero que no distingue entre mayúsculas y minúsculas. Este tipo de sistema de archivos no es compatible con Git y hace que algunos comandos de Git (como git status
) se comporten de forma anormal. Debido a esto, le recomendamos que siempre trabaje con los archivos de origen AOSP en un sistema de archivos que distingue entre mayúsculas y minúsculas. Esto se puede hacer con bastante facilidad utilizando una imagen de disco, que se analiza a continuación.
Cuando el sistema de archivos adecuado está disponible, compilar la rama master
en un entorno macOS moderno es sencillo. Las ramas anteriores requieren algunas herramientas y SDK adicionales.
Creación de una imagen de disco sensible a mayúsculas y minúsculas
Puede crear un sistema de archivos sensible a mayúsculas y minúsculas dentro de su entorno macOS existente mediante una imagen de disco. Para crear la imagen, inicie Utilidad de discos y seleccione Nueva imagen. Un tamaño de 250 GB es el mínimo para completar la construcción; más espacio es lo mejor para el crecimiento futuro. El uso de imágenes dispersas ahorra espacio al tiempo que permite el crecimiento según sea necesario. Seleccione distinguir mayúsculas y minúsculas, en diario como formato de volumen.
También puede crear el sistema de archivos desde un shell con el siguiente comando:
hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 250g ~/android.dmg.sparseimage
Esto crea un archivo .dmg.sparseimage
que, cuando se monta, actúa como una unidad con el formato necesario para el desarrollo de Android.
Si necesita un volumen más grande más adelante, puede cambiar el tamaño de la imagen dispersa con el siguiente comando:
hdiutil resize -size <new-size-you-want>g ~/android.dmg.sparseimage
Para una imagen de disco llamada android.dmg.sparseimage
almacenada en su directorio personal, puede agregar funciones auxiliares a ~/.bash_profile
:
- Para montar la imagen cuando se ejecuta el
mountAndroid
# mount the android file imagemountAndroid() { hdiutil attach ~/android.dmg.sparseimage -mountpoint /Volumes/android; }
- desmontar cuando se ejecuta el
umountAndroid
# unmount the android file imageumountAndroid() { hdiutil detach /Volumes/android; }
Después de montar el android
volumen, hacer todo tu trabajo. Puede expulsarlo (desmontarlo) igual que lo haría con una unidad externa.
Instalación de Xcode y otros paquetes
- Instalar las herramientas de línea de comandos de Xcode:
xcode-select --install
Para versiones anteriores de macOS (10.8 o versiones anteriores), debe instalar Xcode desde el sitio para desarrolladores de Apple. Si no estás registrado como desarrollador de Apple, debes crear un ID de Apple para descargar.
- Instale MacPorts o Homebrew para la administración de paquetes.
- Asegúrese de que el directorio asociado en su camino dentro de su
~/.bash_profile
archivo:- MacPorts –
/opt/local/bin
debe aparecer antes de/usr/bin
export PATH=/opt/local/bin:$PATH
- Homebrew –
/usr/local/bin
export PATH=/usr/local/bin:$PATH
- MacPorts –
- Para MacPorts, tema:
POSIXLY_CORRECT=1 sudo port install git gnupg
- Para Homebrew, problema:
brew install git gnupg2
Establecer un límite de descriptores de archivo
En macOS, el límite predeterminado en el número de descriptores de archivo abiertos simultáneos es demasiado bajo y un proceso de compilación altamente paralelo puede exceder este límite. Para aumentar la tapa, agregar las siguientes líneas a su ~/.bash_profile
:
# set the number of open files to be 1024ulimit -S -n 1024