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

Construyendo androide

Siga estas instrucciones para comenzar a construir Android.

Configuración del entorno

Inicialice el entorno con el script envsetup.sh :

source build/envsetup.sh

o

. build/envsetup.sh

Consulte la secuencia de comandos en platform/build/envsetup.sh para obtener descripciones de los comandos relacionados, incluido lunch para seleccionar dispositivos de destino y tapas para crear aplicaciones desagregadas, como la aplicación de TV de referencia .

Debe volver a emitir este comando después de cada repo sync de repositorio para detectar cualquier cambio en ese script. Tenga en cuenta que reemplazar la source con . (un solo punto) ahorra algunos caracteres, y la forma abreviada se usa más comúnmente en la documentación.

El script envsetup.sh importa varios comandos que le permiten trabajar con el código fuente de Android, incluidos los comandos utilizados en este ejercicio.

Para ver la lista completa de comandos disponibles, ejecute:

hmm

Elegir un objetivo

comida

Elija qué objetivo construir con el lunch . lunch product_name - build_variant selecciona product_name como el producto a construir, y build_variant como la variante a construir, y almacena esas selecciones en el entorno para ser leídas por invocaciones posteriores de m y otros comandos similares.

La configuración exacta se puede pasar como un argumento. Por ejemplo, el siguiente comando se refiere a una compilación completa para el emulador, con todas las depuraciones habilitadas:

lunch aosp_arm-eng

Si se ejecuta sin argumentos, lunch le pide que elija un objetivo del menú, pero tenga en cuenta que el menú no incluye todas las posibilidades. Consulte Selección de una compilación de dispositivo para ver las configuraciones de compilación de todos los dispositivos admitidos en AOSP, o hable con personas de su equipo sobre el almuerzo correcto para el dispositivo en el que está trabajando.

Todos los objetivos de compilación toman la forma BUILD-BUILDTYPE , donde BUILD es un nombre en clave que se refiere a la combinación de funciones en particular. BUILDTYPE es uno de los siguientes.

tipo de construcción Usar
usuario Acceso limitado; adecuado para la producción
depuración de usuario Como usuario pero con acceso raíz y capacidad de depuración; preferido para la depuración
ing Configuración de desarrollo con herramientas de depuración adicionales

La compilación de depuración del usuario debe comportarse igual que la compilación del usuario, con la capacidad de habilitar una depuración adicional que normalmente viola el modelo de seguridad de la plataforma. Esto hace que la compilación de depuración de usuario sea buena para las pruebas de usuario con mayores capacidades de diagnóstico. Al desarrollar con la compilación de depuración de usuario, siga las pautas de depuración de usuario.

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

Para obtener más información sobre la compilación y la ejecución en hardware real, consulte Dispositivos intermitentes .

tapas

El comando tapas configura la compilación de aplicaciones desagregadas. Selecciona aplicaciones individuales para que las construya el sistema de compilación de Android. A diferencia de lunch , tapas no solicita la construcción de imágenes para un dispositivo.

Ejecute la tapas help para obtener más información sobre el comando.

Construyendo el código

Esta sección es un resumen rápido para garantizar que la configuración esté completa.

Construye todo con m . 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.

m

Como se explicó anteriormente, puede crear módulos específicos en lugar de la imagen completa del dispositivo enumerando sus nombres en su línea de comando m . Además, m proporciona algunos pseudoobjetivos para propósitos especiales. Algunos ejemplos son:

  • droid - m droid es la versión normal. Este destino está aquí porque el destino predeterminado requiere un nombre.
  • all - m all construye todo lo que hace m droid , además de todo lo que no tiene la etiqueta droid . El servidor de compilación ejecuta esto para asegurarse de que todo lo que está en el árbol y tiene un archivo Android.mk se compila.
  • m : ejecuta compilaciones desde la parte superior del árbol. Esto es útil porque puede ejecutar make desde dentro de los subdirectorios. Si tiene configurada la variable de entorno TOP , la usa. Si no lo hace, busca el árbol desde el directorio actual, tratando de encontrar la parte superior del árbol. Puede crear todo el árbol de código fuente ejecutando m sin argumentos o crear objetivos específicos especificando sus nombres.
  • 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 - cd hasta la parte superior del árbol.
  • clean - m clean elimina todos los archivos intermedios y de salida para esta configuración. Esto es lo mismo que rm -rf out/ .

Ejecute m help para ver qué otros pseudotargets m proporciona.

Ejecutando la compilación

Puede ejecutar su compilación en un emulador o actualizarla en un dispositivo. Debido a que ya seleccionó su objetivo de compilación con lunch , es poco probable que se ejecute en un objetivo diferente al que fue creado.

Flasheo con fastboot

Para actualizar un dispositivo, use fastboot , que debe incluirse en su ruta después de una compilación exitosa. Consulte Flasheo de un dispositivo para obtener instrucciones.

Emular un dispositivo Android

El emulador se agrega automáticamente a su ruta mediante el proceso de compilación. Para ejecutar el emulador, escriba:

emulator

Comprender las huellas dactilares de compilación

Para rastrear e informar problemas relacionados con una compilación de Android en particular, es importante comprender la huella digital de la compilación. La huella digital de compilación es una cadena única, legible por humanos, que contiene información del fabricante emitida para cada compilación. Consulte la descripción de HUELLA DIGITAL en la sección Parámetros de compilación del Documento de definición de compatibilidad (CDD) de Android para conocer la sintaxis precisa.

La huella digital de compilación representa una implementación y revisión particular de Android. Esta clave única permite a los desarrolladores de aplicaciones y a otros informar problemas con versiones de firmware específicas. Consulte Informes de errores para el proceso de informe de problemas de Android.

Una huella digital de compilación encapsula todos los detalles de implementación de Android:

  • API: Android y nativo, así como comportamientos de API suaves
  • Core API y algunos comportamientos de la interfaz de usuario del sistema
  • Requisitos de compatibilidad y seguridad definidos en la DDC
  • Especificaciones del producto y la configuración de usos y características empleada por las aplicaciones para dispositivos de destino que cumplan con los requisitos esperados
  • Implementaciones de componentes de hardware y software.

Consulte la CDD para obtener detalles completos y Agregar un nuevo dispositivo para obtener instrucciones sobre cómo crear un dispositivo Android completamente nuevo.

Solución de problemas de errores comunes de compilación

Versión incorrecta de Java

Si está intentando crear una versión de Android que no es coherente con su versión de Java, make con un mensaje como:

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

Sin permiso USB

De forma predeterminada, en la mayoría de los sistemas Linux, los usuarios sin privilegios no pueden acceder a los puertos USB. Si ve un error de permiso denegado, siga las instrucciones en Configuración del acceso USB .

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