Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Cómo compilar Android

Sigue estas instrucciones para comenzar a compilar Android.

Cómo configurar el entorno

Inicializa el entorno con la secuencia de comandos envsetup.sh:

source build/envsetup.sh

O

. build/envsetup.sh

Consulta descripciones de comandos relacionados, incluido lunch para seleccionar orientaciones por dispositivo y tapas para compilar apps sin agrupar, como la app de TV de referencia, en la secuencia de comandos de platform/build/envsetup.sh.

Debes volver a emitir este comando después de cada repo sync para registrar los cambios en esa secuencia. Ten en cuenta que reemplazar source por . (un solo punto) permite ahorrar algunos caracteres, y la forma corta se usa con mayor frecuencia en la documentación.

La secuencia de comandos envsetup.sh importa varios comandos que te permiten trabajar con el código fuente de Android, incluidos los que se usan en este ejercicio.

Para ver la lista completa de comandos disponibles, ejecuta lo siguiente:

hmm

Cómo elegir una orientación

Usa lunch para elegir la orientación que deseas compilar. lunch product_name-build_variant selecciona product_name como el producto para compilar y build_variant como la variante para compilar, y almacena esas selecciones en el entorno para que sean leídas por invocaciones de m y otros comandos similares.

Puedes pasar la configuración exacta como un argumento. Por ejemplo, el siguiente comando hace referencia a una compilación completa para el emulador, con toda la depuración habilitada:

lunch aosp_arm-eng

Si se ejecuta sin argumentos, lunch te pide que elijas un objetivo del menú. Consulta las configuraciones de compilación de todos los dispositivos existentes en Cómo seleccionar la compilación de un dispositivo.

Todas los orientaciones de compilación toman el formato BUILD-BUILDTYPE, en el que BUILD es un nombre interno que hace referencia a la combinación de funciones específica. BUILDTYPE es una de las siguientes opciones:

Buildtype Uso
user Acceso limitado; adecuado para producción
userdebug Como user, pero con acceso de raíz y capacidad de depuración; opción preferida para la depuración
eng Configuración de desarrollo con herramientas de depuración adicionales

La compilación userdebug debería tener el mismo comportamiento que user, además de la capacidad de habilitar depuraciones adicionales que, normalmente, infringen el modelo de seguridad de la plataforma. Por ese motivo, la compilación userdebug es buena para los usuarios que prueban con capacidades de diagnóstico mayores. Si desarrollas con esta compilación, sigue las pautas de userdebug.

La compilación eng prioriza la productividad de ingeniería para los ingenieros que trabajan en la plataforma. La compilación eng desactiva varias optimizaciones usadas para proporcionar una buena experiencia del usuario. De lo contrario, el comportamiento es similar a las compilaciones user y userdebug. De este modo, los desarrolladores de dispositivos pueden ver cómo se comporta el código en esos entornos.

Si deseas obtener más información sobre cómo compilar y ejecutar en hardware real, consulta Cómo ejecutar compilaciones.

Cómo compilar el código

Esta sección es un resumen rápido que garantiza que se complete la configuración.

Compila todo con m. m puede controlar tareas paralelas con un argumento -jN. Si no proporcionas un argumento -j, el sistema de compilación seleccionará automáticamente un recuento de tareas paralelas que considere óptimo para tu sistema.

m

Como se explicó anteriormente, puedes compilar módulos específicos en lugar de la imagen del dispositivo completa si indicas los nombres en la línea de comandos de m. Además, m proporciona algunos pseudoobjetivos para fines especiales. Por ejemplo:

  • droid: m droid es la compilación normal. El objetivo está aquí porque el objetivo predeterminado requiere un nombre.
  • all: m all compila todo lo que hace m droid, además de todo lo que no tiene la etiqueta droid. El servidor de compilación lo ejecuta para asegurarse de que se compile todo lo que esté en el árbol y tenga un archivo Android.mk.
  • m: ejecuta compilaciones desde la parte superior del árbol. Es útil, ya que te permite ejecutar make desde adentro de los subdirectorios. Usa la variable de entorno de TOP si la tienes configurada. Si no la tienes, busca el árbol del directorio actual para encontrar la parte superior del árbol. Puedes compilar todo el árbol del código fuente si ejecutas m sin los argumentos, o bien indicar los nombres para compilar destinos específicos.
  • mma: compila todos los módulos en el directorio actual y sus dependencias.
  • mmma: compila todos los módulos en los directorios proporcionados y sus dependencias.
  • croot: corresponde a cd en la parte superior del árbol.
  • clean: m clean borra todos los archivos intermedios y de salida de esta configuración. Es lo mismo que rm -rf out/.

Ejecuta m help para ver qué otros pseudoobjetivos proporciona m.

Cómo ejecutar la compilación

Puedes ejecutar tu compilación en un emulador o instalarla en un dispositivo. Como ya seleccionaste el objetivo de compilación con lunch, es poco probable que se ejecute en un objetivo que no sea para el que se lo compiló.

Cómo escribir en la memoria flash con fastboot

Para escribir en la memoria flash de un dispositivo, usa fastboot, que debería estar incluido en tu ruta después de una compilación exitosa. Consulta Cómo escribir en la memoria flash de un dispositivo para obtener las instrucciones.

Cómo emular un dispositivo Android

El proceso de compilación agrega automáticamente el emulador a tu ruta. Para ejecutar el emulador, escribe lo siguiente:

emulator

Cómo solucionar errores comunes de compilación

Versión de Java incorrecta

Si intentas compilar una versión de Android que no es coherente con tu versión de Java, make anulará la operación con un mensaje como el siguiente:

************************************************************
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 sus soluciones:

Python versión 3

Repo está compilada en una funcionalidad específica de Python 2.x y no es compatible con Python 3. Para usar Repo, instala Python 2.x:

apt-get install python

Sistema de archivos sin distinción entre mayúsculas y minúsculas

Si estás compilando en un sistema de archivos HFS en macOS, es posible que encuentres un error como el siguiente:

************************************************************
You are building on a case-insensitive filesystem.
Please move your source tree to a case-sensitive filesystem.
************************************************************

Sigue las instrucciones que se indican en Cómo crear una imagen de disco que distinga entre mayúsculas y minúsculas.

Sin permiso de USB

De forma predeterminada, en la mayoría de los sistemas Linux, los usuarios sin privilegios no pueden acceder a los puertos USB. Si ves un error de denegación de permisos, sigue las instrucciones que se indican en Cómo configurar el acceso de USB.

Si ya se estaba ejecutando ADB y no puedes conectarte al dispositivo después de configurar esas reglas, puedes finalizar el proceso con adb kill-server. Ese comando hace que se reinicie ADB con la configuración nueva.