Siga las instrucciones de esta página para compilar Android.
Configura tu entorno de construcción
Desde su directorio de trabajo, obtenga el script envsetup.sh
para configurar su entorno de compilación:
source build/envsetup.sh
Este script importa varios comandos que le permiten trabajar con el código fuente de Android, incluidos los comandos utilizados en esta página. Para ver el código fuente del script, consulte platform/build/envsetup.sh
. Para ver la ayuda integrada, escriba hmm
.
Elige un objetivo
Antes de construir Android, debes identificar un objetivo para construir. Un objetivo refleja la plataforma de destino para la que está construyendo. Para identificar su objetivo a construir, use el comando lunch
seguido de una cadena que represente el objetivo. Por ejemplo:
lunch aosp_cf_x86_64_phone-trunk_staging-userdebug
Ver el objetivo actual
Para ver la configuración actual del almuerzo, ejecute:
$ echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"
La cadena que representa el destino tiene el siguiente formato:
lunch product_name-release-build_variant
Los componentes de esta cadena son:
product_name es el nombre del producto que desea crear, como
aosp_cf_x86_64_phone
oaosp_husky
. Su product_name específico puede seguir su propio formato para su dispositivo, pero el formato que utiliza Google para sus dispositivos tiene estos componentes:-
aosp
se refiere a la plataforma de código abierto de Android. - (opcional)
cf
se incluye cuando se pretende ejecutar el objetivo dentro del emulador Cuttlefish. - Arquitectura y hardware (nombre en clave), como
x86_64_phone
ohusky
, que es el nombre en clave de Pixel 8 pro. Para obtener una lista de nombres en clave para dispositivos de Google, consulte Nombres en clave de dispositivos .
-
La release está configurada en
trunk_staging
.La parte build_variant de la cadena puede ser uno de los tres valores de la siguiente tabla:
build_variant Descripción user
Esta variante de compilación proporciona acceso de seguridad limitado y es adecuada para producción. userdebug
Esta variante de compilación ayuda a los desarrolladores de dispositivos a comprender el rendimiento y el poder de las versiones en desarrollo. Al desarrollar con una compilación userdebug
, siga las Directrices para userdebug .eng Esta variante de compilación tiene un tiempo de compilación más rápido y es más adecuada para el desarrollo diario si no le importa el rendimiento y la potencia.
Si ejecuta lunch
sin ningún argumento, se proporciona una lista de objetivos comunes. También puede crear sus propias cadenas de destino uniendo los elementos de la cadena de destino utilizando la información de esta página y los nombres en clave que representan hardware específico de Google en Nombres en clave de dispositivos .
Construye el código
Ejecute el siguiente comando para construir su objetivo. Dependiendo de las especificaciones de su estación de trabajo, la primera compilación podría tardar menos de una hora o hasta unas pocas horas. Las compilaciones posteriores toman mucho menos tiempo.
$ m
El primer resultado que debería ver es una sinopsis de su entorno de destino y de construcción:
============================================
PLATFORM_VERSION_CODENAME=VanillaIceCream
PLATFORM_VERSION=VanillaIceCream
PRODUCT_INCLUDE_TAGS=com.android.mainline
TARGET_PRODUCT=aosp_arm
TARGET_BUILD_VARIANT=eng
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
TARGET_CPU_VARIANT=generic
HOST_OS=linux
HOST_OS_EXTRA=Linux-6.5.13-1rodete2-amd64-x86_64-Debian-GNU/Linux-rodete
HOST_CROSS_OS=windows
BUILD_ID=AOSP.MAIN
OUT_DIR=out
============================================
El resultado de su compilación aparece en ` $OUT_DIR . Si crea objetivos diferentes, cada compilación de objetivo aparece en $OUT_DIR .
El comando m
se construye desde la parte superior del árbol, por lo que puede ejecutar m
desde dentro de los subdirectorios. Si tiene configurada la variable de entorno TOP
, el comando m
la usa. Si TOP
no está configurado, el comando m
busca el árbol desde el directorio actual, intentando encontrar la parte superior del árbol.
El comando m
puede manejar tareas paralelas con un argumento -jN
. Si no proporciona un argumento -j
, el sistema de compilación selecciona automáticamente un recuento de tareas paralelas que considera óptimo para su sistema.
Puede crear módulos específicos en lugar de la imagen completa del dispositivo enumerando los nombres de los módulos en su línea de comando m
. Además, el comando m
proporciona algunos pseudoobjetivos, llamados objetivos . Por ejemplo, m nothing
no construye nada, pero analiza y valida la estructura de construcción. Para obtener una lista de objetivos válidos, escriba m help
.
Solucionar errores de compilación (8.0 o anterior)
Si está compilando AOSP 8 o una versión anterior, m
podría cancelarse cuando encuentre un problema con su versión de Java. Por ejemplo, es posible que reciba este mensaje:
************************************************************
You are attempting to build with the incorrect version
of java.
Your version is: WRONG_VERSION.
The correct version is: RIGHT_VERSION.
Please follow the machine setup instructions at
https://source.android.com/source/initializing.html
************************************************************
Estas son las posibles causas y soluciones:
- No pudo instalar el JDK correcto como se especifica en las secciones JDK de Configuración para el desarrollo de AOSP (2.3 - 8.0) .
- Hay otro JDK previamente instalado que aparece en su camino. Anteponga el JDK correcto al comienzo de su ruta o elimine el JDK problemático.