Problemas de sincronización de fuentes

Aunque prestemos mucha atención, a veces surgen pequeños problemas. En esta página, se detallan algunos problemas conocidos que pueden surgir al intentar sincronizar el código fuente de Android.

Dificultades para sincronizar el código fuente (problemas relacionados con el proxy)

Síntoma: Falla de repo init o repo sync con errores HTTP, generalmente 403 o 500.

Causa: Existen varias causas posibles. En la mayoría de los casos, se relacionan con la dificultad de los servidores proxy HTTP para controlar la transferencia de grandes cantidades de datos.

Solución: Si bien no hay una solución general, usar Python 2.7 y de forma directa repo sync -j1 a veces puede ser útil.

Dificultades para sincronizar el árbol de fuentes (problemas relacionados con el DNS)

Síntoma: Cuando se ejecuta repo sync, el proceso falla debido a distintos errores que tienen que ver con que no se reconoce el nombre de host. Uno de esos errores es <urlopen error [Errno -2] Name or service not known>.

Causa: Algunos sistemas de DNS tienen dificultades para controlar la gran cantidad de consultas relacionadas con la sincronización del árbol de fuentes (en el peor de los casos, puede haber cientos de solicitudes).

Solución: Resuelve manualmente los nombres de host relevantes y codifica esos resultados a nivel local.

Puedes resolverlos con el comando nslookup, que proporciona una dirección IP numérica para cada nombre de host (generalmente, en la parte "Dirección" del resultado).

nslookup googlesource.com
nslookup android.googlesource.com

Luego, para codificarlos localmente, puedes editar /etc/hosts y agregar dos líneas en ese archivo, de esta forma:

aaa.bbb.ccc.ddd googlesource.com
eee.fff.ggg.hhh android.googlesource.com

Dificultades para sincronizar el árbol de fuentes (problemas relacionados con el TCP)

Síntoma: Se bloquea repo sync durante la sincronización, por lo general al llegar al 99%.

Causa: Algunos parámetros de configuración de la pila TCP/IP crean dificultades en algunos entornos de red, por lo que repo sync no se completa ni falla.

Solución: En Linux, ingresa el siguiente comando:

sysctl -w net.ipv4.tcp_window_scaling=0

En macOS, inhabilita la extensión rfc1323 en la configuración de red.