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 realizaron esos cambios. En esta página, se describe cómo descargar el árbol de fuentes de una línea de código de Android específica.

A fin de 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 permite trabajar con Git en el contexto de Android con mayor facilidad. Si deseas obtener más información sobre Repo, consulta la Referencia de comandos de Repo y el README de Repo.

Repo consta de dos partes: una secuencia de comandos de Launcher que instalas y la herramienta Repo completa con la que se conecta, incluida en la confirmación de la compra de un 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 esta ruta:

        mkdir ~/bin
        PATH=~/bin:$PATH
        
  2. Descarga el Launcher 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 Launcher coincida con nuestras firmas:

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

Repositorio más antiguo para sistemas heredados de Python 2

Si usas un sistema antiguo sin Python 3.6 ni una versión posterior, prueba descargar una versión anterior del Launcher de Repo que admita Python 2.7. Esta acción no funcionará de forma indefinida, 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 en 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 de 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 versión más reciente de Repo con sus correcciones de errores más recientes. Debes especificar una URL para el manifiesto, que indica en qué lugar del directorio de trabajo se encuentran los repositorios incluidos en la fuente de Android.

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

    Para ver otra 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 la inicialización finaliza correctamente, se mostrará un mensaje que indicará que Repo se inicializó en el directorio de trabajo. Tu directorio de clientes ahora debería incluir un directorio de .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, como se especifica en el manifiesto predeterminado, ejecuta:

repo sync

Los archivos de origen de Android se encuentran 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 manera predeterminada, el acceso al código fuente de Android es anónimo. A fin de proteger los servidores frente al 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 para patrones de uso regulares (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 utiliza una cuota por separado para cada usuario, independientemente de la dirección IP.

El primer paso consiste en crear una contraseña con el generador de contraseñas y seguir las instrucciones en la página del generador de contraseñas.

El segundo paso consiste en forzar el acceso autenticado mediante el https://android.googlesource.com/a/platform/manifest del URI del manifiesto. Observa cómo el prefijo del directorio de /a/ 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á posteriormente.

    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 experimentan problemas de conectividad y quedan bloqueados en el medio de 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 los 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, especialmente cuando el ancho de banda es escaso, conviene crear una duplicación local de todo el contenido del servidor y sincronizar a los clientes desde esa duplicación (lo 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.

Estas instrucciones asumen que la duplicación se creó en /usr/local/aosp/mirror. Primero, crea y sincroniza la duplicación. Presta atención a la marca de --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 respecto del servidor, sincroniza la duplicación respecto del servidor y, luego, el cliente respecto de 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 a través de 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. Se usa la clave para firmar etiquetas con anotaciones que representan las actualizaciones.

    gpg --import
    

Copia y pega la clave a continuación; luego, escribe EOF (Ctrl-D) para terminar 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, puedes verificar cualquier etiqueta con:

    git tag -v TAG_NAME
    

Cómo obtener objetos binarios de propiedad

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

Cómo descargar objetos binarios de propiedad

Puedes descargar objetos binarios oficiales para los dispositivos admitidos. Para ello, ejecuta ramas de actualizaciones de AOSP etiquetadas desde los controladores de Google. Estos objetos binarios permiten el acceso 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 del número de versión más reciente o con la fecha más reciente.

Cómo extraer objetos binarios de propiedad

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 incluida de comandos de extracción automática desde la raíz del árbol de fuentes y luego confirma que aceptas los términos del acuerdo de licencia adjunto. Se instalarán los objetos binarios y los makefiles que coincidan con ellos en la jerarquía de vendor/ del árbol de fuentes.

Cómo realizar una limpieza

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

    make clobber