Google is committed to advancing racial equity for Black communities. See how.

Cómo descargar la fuente

El árbol de fuentes de Android se encuentra en un repositorio de Git alojado por Google. El repositorio de Git incluye metadatos sobre la fuente de Android, como qué cambios se realizaron en la fuente y cuándo se hicieron esas modificaciones. 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 instalar Repo

Repo es una herramienta que facilita el trabajo con Git en el contexto de Android. Consulta la Referencia de comandos de Repo y el README de Repo para obtener más información sobre Repo.

Repo consta de dos partes: una secuencia de comandos de selector que instalas y la herramienta Repo completa con la que se conecta, incluida en una implementación de código fuente. Para instalar Repo, haz lo siguiente:

  1. Asegúrate de tener un directorio bin/ en tu directorio principal y de que esté incluido en la ruta:

    mkdir ~/bin
    PATH=~/bin:$PATH
    
  2. Descarga el selector de Repo y asegúrate de que sea ejecutable:

    curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
    chmod a+x ~/bin/repo
    
  3. De manera opcional, verifica que el selector coincida con nuestras firmas:

    gpg --recv-key 8BB9AD793E8E6153AF0F9A4416530D5E920F5C65
    curl https://storage.googleapis.com/git-repo-downloads/repo.asc | gpg --verify - ~/bin/repo
    

Repo previo para sistemas heredados de Python 2

Si usas un sistema antiguo sin Python 3.6 ni una versión posterior, descarga una versión anterior del selector de Repo que admita Python 2.7. Esto no funcionará indefinidamente, pero podría ser útil hasta que se actualice tu sistema.

curl https://storage.googleapis.com/git-repo-downloads/repo-1 > ~/bin/repo
chmod a+x ~/bin/repo

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. Si usas macOS, debe ser un sistema de archivos que distinga entre mayúsculas y minúsculas. 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 en tu directorio de trabajo.

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

    Si quieres ver una rama distinta de master, usa -b para especificar cuál deseas ver. Si deseas obtener una lista de ramas, consulta Etiquetas de código fuente y compilaciones.

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

Si usas Git 2.19 o una versión posterior, puedes especificar --partial-clone cuando realices repo init; esa acción implementará la clonación parcial de Git, que solo descarga objetos de Git cuando es necesario, en lugar de descargar todo. Esta implementación se recomienda para los desarrolladores que usan una red con baja latencia:

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

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 debería incluir un directorio .repo en el que se guarden 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 como se especifica en el manifiesto predeterminado, ejecuta:

repo sync

Los archivos de origen de Android están en tu directorio de trabajo, debajo de los nombres de proyecto. Para acelerar las sincronizaciones, usa la marca -jthreadcount. Además, puedes agregar -qc para realizar sincronizaciones silenciosas de ramas actuales únicamente. Consulta la Referencia de comandos de Repo para obtener más información.

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 el otro lado 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 usar el acceso autenticado, que usa una cuota distinta para cada usuario, sin importar la dirección IP.

El primer paso es crear una contraseña con el generador de contraseñas y seguir las instrucciones que se indican en la página de esa herramienta.

El segundo paso es forzar el acceso autenticado mediante el https://android.googlesource.com/a/platform/manifest del URI del manifiesto. Observa cómo el prefijo /a/ del directorio activa la autenticación obligatoria. Puedes convertir un cliente existente para que use la autenticación obligatoria mediante el siguiente comando:

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

Cómo solucionar problemas de red

Si usas un proxy para las descargas (una práctica común en algunos entornos empresariales), es posible que necesites especificar explícitamente el proxy que Repo utilizará luego.

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 quedan bloqueados en el medio de las descargas (por lo general, durante la recepción de objetos). Se informó que ajustar la configuración de la pila de TCP/IP y usar comandos que no sean paralelos puede mejorar la situación. Necesitas acceso a la raíz 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, especialmente si el ancho de banda es escaso, conviene 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). La descarga de una duplicación completa pesa menos que la descarga de dos clientes y contiene más información.

En estas instrucciones, se supone que se creó 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 es fundamental especificar una ruta 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 mediante 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 actualizaciones.

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:

git tag -v TAG_NAME

Cómo obtener objetos binarios de propiedad

No se puede usar el AOSP desde código fuente puro únicamente y requiere bibliotecas adicionales privadas relacionadas con el hardware para su ejecución, como para el hardware de aceleración de gráficos. Si deseas obtener recursos adicionales, consulta los vínculos de descarga y los Objetos binarios del dispositivo en las secciones a continuación.

Cómo descargar objetos binarios privados

Puedes descargar objetos binarios oficiales para los dispositivos admitidos. ejecutando ramas etiquetadas de actualizaciones del 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 del AOSP, usa la Vista previa de objetos binarios en su lugar. Cuando compiles la rama principal de un dispositivo, usa los objetos binarios para el número de actualización más reciente o con la fecha más reciente.

Cómo extraer objetos binarios privados

Cada conjunto de objetos binarios viene como una secuencia de comandos de extracción automática 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 instalarán los objetos binarios y los makefiles que coincidan con ellos en la jerarquía vendor/ del árbol de fuentes.

Limpieza

Para garantizar que se tengan en cuenta correctamente los objetos binarios recién instalados después de su extracción, borra la salida existente de cualquier compilación anterior mediante:

make clobber