construir Android

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 o aosp_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 o husky , 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.