Cómo descargar el archivo fuente

El árbol de fuentes de Android se encuentra en un repositorio de Git alojado por Google. El repositorio de Git contiene metadatos sobre el archivo fuente de Android, que incluyen los cambios que se hicieron en el archivo fuente y cuándo se hicieron. En esta página, se describe cómo descargar el árbol de fuentes para una línea de código de Android específica.

Para comenzar con una imagen de fábrica de un dispositivo específico, en lugar de descargar la fuente, consulta Cómo seleccionar la compilación de un dispositivo.

Cómo inicializar un cliente de Repo

Después de instalar el Launcher de Repo, configura tu cliente para acceder al repositorio de fuentes de Android:

  1. Crea un directorio vacío que contenga tus archivos de trabajo. Ponle el nombre que desees:

    mkdir WORKING_DIRECTORY
    cd WORKING_DIRECTORY
    
  2. Configura Git con tu dirección de correo electrónico y tu nombre reales. Para usar la herramienta de revisión de código Gerrit, necesitas una dirección de correo electrónico conectada con una Cuenta de Google registrada. Asegúrate de que sea una dirección activa en la que puedas recibir mensajes. El nombre que indiques aquí se mostrará en las atribuciones de los envíos de código que hagas.

    git config --global user.name Your Name
    git config --global user.email you@example.com
    
  3. Ejecuta repo init para obtener la última versión de Repo con las correcciones de errores más recientes. Debes especificar una URL para el manifiesto, que indique dónde están los repositorios incluidos en la fuente de Android dentro de tu directorio de trabajo.

    repo init -u https://android.googlesource.com/platform/manifest
    

    Para revisar la rama principal, sigue estos pasos:

    repo init -u https://android.googlesource.com/platform/manifest -b master
    

    Si quieres ver una rama que no sea la principal, usa -b para especificarla. Si deseas obtener una lista de ramas, consulta Etiquetas de código fuente y compilaciones.

    Para Python 2

    Para Python 3

    Si recibes el mensaje de error "/usr/bin/env 'python' no such file or directory", usa una de las siguientes soluciones:

    Si tu Ubuntu 20.04.2 LTS es una versión de Linux recientemente instalada (en lugar de actualizada), haz lo siguiente:

    sudo ln -s /usr/bin/python3 /usr/bin/python

    Si usas Git 2.19 o una versión posterior, puedes especificar --partial-clone cuando ejecutes repo init. Esto hace que se use la función de clonación parcial de Git, que solo descarga objetos de Git cuando es necesario, en lugar de descargar todo. Como el uso de la clonación parcial implica que muchas operaciones deban comunicarse con el servidor, si eres desarrollador y estás usando una red con baja latencia, utiliza lo siguiente:

    repo init -u https://android.googlesource.com/platform/manifest -b master --partial-clone --clone-filter=blob:limit=10M
    

    Solo para el SO Windows: Si recibes un mensaje de error que indica que no se pudieron crear vínculos simbólicos, lo que provocó que repo init falle, consulta la Documentación de vínculos simbólicos de GitHub para crearlos o habilitar su asistencia. Para los usuarios que no son administradores, consulta la sección sobre la habilitación de usuarios que no son administradores con el objetivo de que creen vínculos simbólicos.

Cuando finaliza correctamente la inicialización, aparece un mensaje que indica que se inicializó Repo en el directorio de trabajo. Tu directorio de clientes ahora contiene un directorio .repo en el que se guardan archivos, como el manifiesto.

Cómo descargar el árbol de fuentes de Android

Para descargar el árbol de fuentes de Android a tu directorio de trabajo desde los repositorios según lo especificado en el manifiesto predeterminado, ejecuta la siguiente instrucción:

repo sync

Para acelerar las sincronizaciones, pasa las marcas -c (rama actual) y -jthreadcount:

repo sync -c -j8

Los archivos fuente de Android se descargan en tu directorio de trabajo, debajo de los nombres de sus proyectos.

Para suprimir el resultado, pasa la marca -q (quiet). Consulta la Referencia de comandos de Repo para ver todas las opciones.

Cómo usar la autenticación

De forma predeterminada, el acceso al código fuente de Android es anónimo. A fin de proteger los servidores contra el uso excesivo, cada dirección IP está asociada con una cuota.

Cuando compartes una dirección IP con otros usuarios (por ejemplo, cuando accedes a los repositorios de fuentes desde fuera de un firewall de NAT), las cuotas pueden activarse incluso con patrones de uso habituales (por ejemplo, si muchos usuarios sincronizan clientes nuevos desde la misma dirección IP en un período corto).

En ese caso, puedes emplear el acceso autenticado, que usa una cuota distinta para cada usuario, sin importar la dirección IP.

Primero, crea una contraseña con el generador de contraseñas y sigue las instrucciones que se indican en esa página.

Luego, fuerza el acceso autenticado con el https://android.googlesource.com/a/platform/manifest del URI de manifiesto. Como se puede ver, el prefijo del directorio /a/ activa la autenticación obligatoria. Puedes convertir un cliente existente para que use la autenticación obligatoria con el siguiente comando:

repo init -u https://android.googlesource.com/a/platform/manifest

Cómo solucionar problemas de red

Cuando realices descargas desde detrás de un proxy (una práctica común en algunos entornos empresariales), es posible que debas indicar explícitamente el proxy que usa Repo:

export HTTP_PROXY=http://<proxy_user_id>:<proxy_password>@<proxy_server>:<proxy_port>
export HTTPS_PROXY=http://<proxy_user_id>:<proxy_password>@<proxy_server>:<proxy_port>

Con menos frecuencia, los clientes de Linux tienen problemas de conectividad y se bloquean en medio de las descargas (por lo general, durante la recepción de objetos). Ajustar la configuración de pila de TCP/IP y usar comandos que no sean paralelos puede mejorar la situación. Debes tener acceso con permisos de administrador para modificar la configuración de TCP:

sudo sysctl -w net.ipv4.tcp_window_scaling=0
repo sync -j1

Cómo usar una duplicación local

Cuando usas varios clientes, puedes crear una duplicación local de todo el contenido del servidor y sincronizar los clientes desde esa duplicación (que no requiere acceso a la red).

En estas instrucciones, se presupone que se crea la duplicación en /usr/local/aosp/mirror. Primero, crea y sincroniza la duplicación. Observa la marca --mirror, que puedes especificar solo cuando creas un cliente nuevo.

mkdir -p /usr/local/aosp/mirror
cd /usr/local/aosp/mirror
repo init -u https://android.googlesource.com/mirror/manifest --mirror
repo sync

Puedes crear clientes nuevos a partir de la duplicación una vez que está sincronizada. Ten en cuenta que debes especificar una ruta de acceso absoluta:

mkdir -p /usr/local/aosp/master
cd /usr/local/aosp/master
repo init -u /usr/local/aosp/mirror/platform/manifest.git
repo sync

Por último, para sincronizar un cliente con el servidor, sincroniza la duplicación con el servidor y, luego, el cliente con la duplicación.

cd /usr/local/aosp/mirror
repo sync
cd /usr/local/aosp/master
repo sync

Puedes almacenar la duplicación en un servidor LAN y acceder a ella por NFS, SSH o Git. También puedes almacenarla en una unidad extraíble y pasar esa unidad entre los usuarios o las máquinas.

Cómo verificar etiquetas de Git

Carga la siguiente clave pública en tu base de datos de claves de GnuPG. La clave se usa para firmar etiquetas con anotaciones que representan versiones.

gpg --import

Copia y pega la clave a continuación; luego, escribe EOF (Ctrl-D) para finalizar la entrada y procesar las claves.

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.2.2 (GNU/Linux)

mQGiBEnnWD4RBACt9/h4v9xnnGDou13y3dvOx6/t43LPPIxeJ8eX9WB+8LLuROSV
lFhpHawsVAcFlmi7f7jdSRF+OvtZL9ShPKdLfwBJMNkU66/TZmPewS4m782ndtw7
8tR1cXb197Ob8kOfQB3A9yk2XZ4ei4ZC3i6wVdqHLRxABdncwu5hOF9KXwCgkxMD
u4PVgChaAJzTYJ1EG+UYBIUEAJmfearb0qRAN7dEoff0FeXsEaUA6U90sEoVks0Z
wNj96SA8BL+a1OoEUUfpMhiHyLuQSftxisJxTh+2QclzDviDyaTrkANjdYY7p2cq
/HMdOY7LJlHaqtXmZxXjjtw5Uc2QG8UY8aziU3IE9nTjSwCXeJnuyvoizl9/I1S5
jU5SA/9WwIps4SC84ielIXiGWEqq6i6/sk4I9q1YemZF2XVVKnmI1F4iCMtNKsR4
MGSa1gA8s4iQbsKNWPgp7M3a51JCVCu6l/8zTpA+uUGapw4tWCp4o0dpIvDPBEa9
b/aF/ygcR8mh5hgUfpF9IpXdknOsbKCvM9lSSfRciETykZc4wrRCVGhlIEFuZHJv
aWQgT3BlbiBTb3VyY2UgUHJvamVjdCA8aW5pdGlhbC1jb250cmlidXRpb25AYW5k
cm9pZC5jb20+iGAEExECACAFAknnWD4CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIX
gAAKCRDorT+BmrEOeNr+AJ42Xy6tEW7r3KzrJxnRX8mij9z8tgCdFfQYiHpYngkI
2t09Ed+9Bm4gmEO5Ag0ESedYRBAIAKVW1JcMBWvV/0Bo9WiByJ9WJ5swMN36/vAl
QN4mWRhfzDOk/Rosdb0csAO/l8Kz0gKQPOfObtyYjvI8JMC3rmi+LIvSUT9806Up
hisyEmmHv6U8gUb/xHLIanXGxwhYzjgeuAXVCsv+EvoPIHbY4L/KvP5x+oCJIDbk
C2b1TvVk9PryzmE4BPIQL/NtgR1oLWm/uWR9zRUFtBnE411aMAN3qnAHBBMZzKMX
LWBGWE0znfRrnczI5p49i2YZJAjyX1P2WzmScK49CV82dzLo71MnrF6fj+Udtb5+
OgTg7Cow+8PRaTkJEW5Y2JIZpnRUq0CYxAmHYX79EMKHDSThf/8AAwUIAJPWsB/M
pK+KMs/s3r6nJrnYLTfdZhtmQXimpoDMJg1zxmL8UfNUKiQZ6esoAWtDgpqt7Y7s
KZ8laHRARonte394hidZzM5nb6hQvpPjt2OlPRsyqVxw4c/KsjADtAuKW9/d8phb
N8bTyOJo856qg4oOEzKG9eeF7oaZTYBy33BTL0408sEBxiMior6b8LrZrAhkqDjA
vUXRwm/fFKgpsOysxC6xi553CxBUCH2omNV6Ka1LNMwzSp9ILz8jEGqmUtkBszwo
G1S8fXgE0Lq3cdDM/GJ4QXP/p6LiwNF99faDMTV3+2SAOGvytOX6KjKVzKOSsfJQ
hN0DlsIw8hqJc0WISQQYEQIACQUCSedYRAIbDAAKCRDorT+BmrEOeCUOAJ9qmR0l
EXzeoxcdoafxqf6gZlJZlACgkWF7wi2YLW3Oa+jv2QSTlrx4KLM=
=Wi5D
-----END PGP PUBLIC KEY BLOCK-----

Después de importar las claves, podrás verificar cualquier etiqueta con la siguiente instrucción:

git tag -v TAG_NAME

Cómo obtener objetos binarios propietarios

AOSP no puede usarse desde código fuente puro únicamente y requiere bibliotecas adicionales propietarias relacionadas con el hardware para su ejecución, por ejemplo, para la aceleración de gráficos por hardware. Si deseas obtener recursos adicionales, consulta los vínculos de descarga y los Objetos binarios del dispositivo en las secciones siguientes.

Cómo descargar objetos binarios propietarios

Puedes descargar objetos binarios oficiales para los dispositivos admitidos si ejecutas ramas etiquetadas de versiones de AOSP desde los controladores de Google. Estos objetos binarios permiten acceder a capacidades de hardware adicionales con código no abierto. Para compilar la rama principal de AOSP, usa la Vista previa de objetos binarios en su lugar. Cuando compiles la rama principal de un dispositivo, usa los objetos binarios correspondientes al número de versión más reciente o la fecha más reciente.

Cómo extraer objetos binarios propietarios

Cada conjunto de objetos binarios consiste en una secuencia de comandos de extracción automática incluida en un archivo comprimido. Descomprime cada archivo, ejecuta la secuencia de comandos de extracción automática incluida desde la raíz del árbol de fuentes y luego confirma que aceptas los términos del Contrato de Licencia adjunto. Se instalan los objetos binarios y los archivos makefile correspondientes en la jerarquía vendor/ del árbol de fuentes.

Limpieza

Para garantizar que una vez realizada la extracción se tengan en cuenta correctamente los objetos binarios recién instalados, borra la salida existente de cualquier compilación anterior con la siguiente instrucción:

make clobber