El árbol de fuentes de Android se encuentra en un repositorio 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 de Android específica.
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 .
Inicializando un cliente Repo
Después de instalar Repo Launcher , configure su cliente para acceder al repositorio de código fuente de Android:
Cree un directorio vacío para guardar sus archivos de trabajo. Ponle el nombre que quieras:
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
Configure Git con su nombre real y dirección de correo electrónico. Para utilizar la herramienta de revisión de códigos de Gerrit, necesita una dirección de correo electrónico que esté conectada con una cuenta registrada de Google . Asegúrese de que 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
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 distintos repositorios incluidos en el código fuente de Android dentro de su directorio de trabajo.repo init -u https://android.googlesource.com/platform/manifest
Para consultar la sucursal principal:
repo init -u https://android.googlesource.com/platform/manifest -b main
Para verificar una rama que no sea principal , especifíquela con
-b
. Para obtener una lista de ramas, consulte Etiquetas y compilaciones del código fuente .Para Python 2
Para Python 3
Si recibe el mensaje de error "
/usr/bin/env 'python' no such file or directory
", utilice una de las siguientes soluciones:Si su Ubuntu 20.04.2 LTS es una versión de Linux recién instalada (o actualizada):
sudo ln -s /usr/bin/python3 /usr/bin/python
Si usa Git versión 2.19 o superior, puede especificar
--partial-clone
al realizarrepo init
. Esto hace uso de la capacidad de clonación parcial de Git para descargar objetos Git solo cuando sea necesario, en lugar de descargarlo todo. Debido a que usar clones parciales significa que muchas operaciones deben comunicarse con el servidor, use lo siguiente si es desarrollador y usa una red con baja latencia:repo init -u https://android.googlesource.com/platform/manifest -b main --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 provoca que
repo init
falle, consulte la documentación de Enlaces simbólicos de GitHub para crearlos o habilitar su soporte. Para los que no son administradores, consulte la sección Permitir que los no administradores creen enlaces simbólicos .
Una inicialización exitosa finaliza 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.
Descargando el árbol de fuentes de Android
Para descargar el árbol de fuentes 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 los -c
(rama actual) y -j threadcount
:
repo sync -c -j8
Los archivos fuente de Android se descargan en su directorio de trabajo bajo los nombres de sus proyectos.
Para suprimir la salida, pase el indicador -q
(silencioso). Consulte la Referencia de comandos de repositorio para conocer todas las opciones.
Usando autenticación
De forma predeterminada, 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 habituales (por ejemplo, si muchos usuarios sincronizan nuevos clientes desde la misma dirección IP dentro de un período corto).
En ese caso, puede utilizar el acceso autenticado, que luego utiliza 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 del directorio /a/
activa la autenticación obligatoria. Puede convertir un cliente existente para utilizar 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 (lo cual es común en algunos entornos corporativos), es posible que deba especificar explícitamente el proxy que utilizará 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 (normalmente durante la recepción de objetos ). Ajustar la configuración de la pila TCP/IP y utilizar 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 utiliza varios clientes, puede crear un espejo local de todo el contenido del servidor y sincronizar clientes desde ese espejo (lo que no requiere acceso a la red).
Estas instrucciones asumen que el espejo se crea en /usr/local/aosp/mirror
. Primero, cree y sincronice el espejo. Observe el indicador --mirror
, que puede especificar solo 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 mirror está sincronizado, puedes crear nuevos clientes a partir de él. Tenga en cuenta que debe especificar una ruta absoluta:
mkdir -p /usr/local/aosp/main
cd /usr/local/aosp/main
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 y luego el cliente con el espejo:
cd /usr/local/aosp/mirror
repo sync
cd /usr/local/aosp/main
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.
Verificar 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, puedes verificar cualquier etiqueta con:
git tag -v TAG_NAME
Obtener binarios propietarios
AOSP no se puede utilizar únicamente desde código fuente puro y requiere bibliotecas propietarias adicionales relacionadas con el hardware para su ejecución, como por ejemplo para la aceleración de gráficos por hardware. Consulte las secciones a continuación para ver enlaces de descarga y archivos binarios de dispositivos para obtener recursos adicionales.
Descargar binarios propietarios
Puede descargar 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 principal de AOSP, utilice la Vista previa de binarios . Al crear la rama principal de un dispositivo, utilice los binarios para la versión numerada más reciente o con la fecha más reciente.
Extraer binarios propietarios
Cada conjunto de 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 binarios y sus archivos MAKE coincidentes se instalan en el vendor/
jerarquía del árbol de origen.
Limpiar
Para garantizar que los archivos 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