Descargando la Fuente

El árbol de fuentes de Android se encuentra en un repositorio de Git alojado por Google. El repositorio de Git incluye metadatos para la fuente de Android, incluidos los cambios en la fuente y cuándo se realizaron los cambios. Esta página describe cómo descargar el árbol fuente para una línea de código específica de Android.

Para comenzar con una imagen de fábrica para un dispositivo específico en lugar de descargar la fuente, consulte Seleccionar una compilación de dispositivo .

Inicializar un cliente Repo

Después de instalar Repo Launcher , configure su cliente para acceder al repositorio fuente de Android:

  1. Cree un directorio vacío para guardar sus archivos de trabajo. Dale el nombre que quieras:

    mkdir WORKING_DIRECTORY
    cd WORKING_DIRECTORY
    
  2. Configure Git con su nombre real y dirección de correo electrónico. Para usar la herramienta de revisión de código de Gerrit, necesita una dirección de correo electrónico que esté conectada con una cuenta de Google registrada . Asegúrese de que esta sea una dirección activa donde pueda recibir mensajes. El nombre que proporciona aquí aparece en las atribuciones de sus envíos de código.

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

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

    Para ver la rama maestra:

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

    Para verificar una rama que no sea maestra , especifíquela con -b . Para obtener una lista de ramas, consulte Etiquetas y compilaciones de código fuente .

    Para pitón 2

    Para pitón 3

    Si recibe un mensaje de error " /usr/bin/env 'python' no such file or directory ", use una de las siguientes soluciones:

    Si su Ubuntu 20.04.2 LTS es una versión de Linux recién instalada (frente a una actualizada):

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

    Si usa Git versión 2.19 o superior, puede especificar --partial-clone al realizar repo init . Esto hace uso de la capacidad de clonación parcial de Git para descargar solo objetos de Git cuando sea necesario, en lugar de descargar todo. Debido a que el uso de clones parciales significa que muchas operaciones deben comunicarse con el servidor, use lo siguiente si es un desarrollador y está usando una red con baja latencia:

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

    Solo para el sistema operativo Windows: si recibe un mensaje de error que indica que no se pudieron crear enlaces simbólicos, lo que hace que falle el repo init del repositorio, consulte la documentación de Enlaces simbólicos de GitHub para crearlos o para habilitar su compatibilidad. Para los usuarios que no son administradores, consulte la sección Permitir que los usuarios que no son administradores creen enlaces simbólicos .

Una inicialización exitosa termina con un mensaje que indica que Repo se inicializó en su directorio de trabajo. Su directorio de cliente ahora contiene un directorio .repo donde se guardan archivos como el manifiesto.

Descargar el árbol de fuentes de Android

Para descargar el árbol fuente de Android a su directorio de trabajo desde los repositorios como se especifica en el manifiesto predeterminado, ejecute:

repo sync

Para acelerar las sincronizaciones, pase las marcas -c (rama actual) y -j threadcount :

repo sync -c -j8

Los archivos fuente de Android se descargan en su directorio de trabajo bajo sus nombres de proyecto.

Para suprimir la salida, pase el indicador -q (silencioso). Consulte la Referencia de comandos Repo para ver todas las opciones.

Uso de la autenticación

Por defecto, el acceso al código fuente de Android es anónimo. Para proteger los servidores contra un uso excesivo, cada dirección IP está asociada a una cuota.

Al compartir una dirección IP con otros usuarios (por ejemplo, al acceder a los repositorios de origen desde más allá de un firewall NAT), las cuotas pueden activarse incluso para patrones de uso regulares (por ejemplo, si muchos usuarios sincronizan nuevos clientes desde la misma dirección IP dentro de un período corto).

En ese caso, puede usar el acceso autenticado, que luego usa una cuota separada para cada usuario, independientemente de la dirección IP.

Primero, cree una contraseña con el generador de contraseñas y siga las instrucciones en la página del generador de contraseñas.

A continuación, fuerce el acceso autenticado mediante el URI de manifiesto https://android.googlesource.com/a/platform/manifest . Observe cómo el prefijo de directorio /a/ activa la autenticación obligatoria. Puede convertir un cliente existente para usar la autenticación obligatoria con el siguiente comando:

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

Solución de problemas de red

Al descargar desde detrás de un proxy (que es común en algunos entornos corporativos), es posible que deba especificar explícitamente el proxy para que lo use 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>

Más raramente, los clientes de Linux experimentan problemas de conectividad y se quedan atascados en medio de las descargas (generalmente durante la recepción de objetos ). Ajustar la configuración de la pila TCP/IP y usar comandos no paralelos puede mejorar la situación. Debe tener acceso de root para modificar la configuración de TCP:

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

Usando un espejo local

Cuando se usan varios clientes, especialmente en situaciones donde el ancho de banda es escaso, es mejor crear un espejo local de todo el contenido del servidor y sincronizar los clientes desde ese espejo (que no requiere acceso a la red). La descarga de un espejo completo es más pequeña que la descarga de dos clientes y contiene más información.

Estas instrucciones asumen que el espejo se crea en /usr/local/aosp/mirror . Primero, cree y sincronice el propio espejo. Observe el indicador --mirror , que solo puede especificar al crear un nuevo cliente:

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

Cuando el espejo está sincronizado, puede crear nuevos clientes a partir de él. Tenga en cuenta que debe 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

Finalmente, para sincronizar un cliente con el servidor, sincronice el espejo con el servidor, luego el cliente con el espejo:

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

Es posible almacenar el espejo en un servidor LAN y acceder a él a través de NFS, SSH o Git. También es posible almacenarlo en una unidad extraíble y pasar esa unidad entre usuarios o máquinas.

Verificación de etiquetas de Git

Cargue la siguiente clave pública en su base de datos de claves GnuPG. La clave se utiliza para firmar etiquetas anotadas que representan lanzamientos.

gpg --import

Copie y pegue la clave a continuación, luego escriba 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, puede verificar cualquier etiqueta con:

git tag -v TAG_NAME

Obtener binarios propietarios

AOSP no se puede usar solo desde el código fuente puro y requiere bibliotecas propietarias adicionales relacionadas con el hardware para ejecutarse, como para la aceleración de gráficos de hardware. Consulte las secciones a continuación para ver los enlaces de descarga y los binarios del dispositivo para obtener recursos adicionales.

Descargar binarios propietarios

Puede descargar archivos binarios oficiales para los dispositivos compatibles que ejecutan ramas de versión AOSP etiquetadas desde los controladores de Google . Estos binarios agregan acceso a capacidades de hardware adicionales con código fuente no abierto. Para construir la rama maestra de AOSP, use la vista previa de archivos binarios en su lugar. Al crear la rama maestra para un dispositivo, use los archivos binarios para la versión numerada más reciente o con la fecha más reciente.

Extraer binarios propietarios

Cada conjunto de archivos binarios viene como un script autoextraíble en un archivo comprimido. Descomprima cada archivo, ejecute el script autoextraíble incluido desde la raíz del árbol fuente y luego confirme que acepta los términos del acuerdo de licencia adjunto. Los archivos binarios y sus correspondientes archivos MAKE se instalan en la jerarquía de vendor/ del árbol de origen.

Limpiar

Para asegurarse de que los binarios recién instalados se tengan en cuenta correctamente después de extraerlos, elimine la salida existente de cualquier compilación anterior usando:

make clobber