La sincronización de contactos y calendario de repente dejó de funcionar

Si bien funcionó bien durante casi un año (desde que instalé CyanogenMod en mi dispositivo), hace un par de días, la sincronización se detuvo repentinamente: los indicadores de red se volvieron blancos (ya no son verdes en Gingerbread / azules en ICS y superiores), lo que indica que el dispositivo no está "sincronizado" con los servidores de Google.

Primero pensé que podría ser una interrupción del servidor de Google (como todos los conocemos), esperé un par de días. Pero no se resolvió en unos pocos días, así que decidí echar un vistazo más de cerca. logcatluego mostró: Siempre al intentar sincronizar, se agotó el tiempo de espera de la conexión de red.

Más efectos secundarios: la aplicación Google Playstore ya no se abrió ("tiempo de espera de la red"), Google Talk insistió en una "falla de nombre de usuario/contraseña".

Ahí es donde me quedé atascado: ¿Qué hacer? Reiniciar no ayudó, apagar/reiniciar tampoco ayudó, ni borrar el caché/datos de la aplicación de sincronización de contactos. No pude cerrar la sesión de GTalk (que sería el siguiente paso lógico), ya que GTalk inmediatamente insistió en ese error de nombre de usuario/contraseña.

¿Ahora que?

Con respecto a los "colores del indicador de red", también vea eldareraesta respuesta aquí . También relacionado: Android ya no se sincroniza

Respuestas (1)

Análisis

Por suerte, logcatdio la dirección IP junto (en mi caso: 74.125.93.113). En mi PC, primero verifiqué con el navegador ("https://74.125.93.113/") y, de hecho, se agotó el tiempo de conexión. Luego verifiqué qué hay detrás de la IP:

host 74.125.93.113
113.93.125.74.in-addr.arpa domain name pointer qw-in-f113.1e100.net.

No me dijo nada. Pero revisando con /etc/hostsel dispositivo Android, encontré la entrada:

74.125.93.113 android.clients.google.com

Una búsqueda de ese host reveló: la IP 74.125.93.113ya no le pertenece, lo que explica el problema.

Solución

La solución requiere root, desafortunadamente, ya que /etc/hostses propiedad de root y solo lectura para todos los demás. Además, /etces solo un enlace simbólico a /system/etc, lo que significa que todo el sistema de archivos es de solo lectura.

Que necesitas

Qué hacer

Abra la aplicación de terminal y siga estos pasos:

# make yourself root
su
# SuperUser/SuperSU may require approval at this point. Give it.

# check how /system is mounted:
mount | grep system

#output will look similar to this:
/dev/block/mmcblk1p21 on /system type ext3 (ro,relatime,barrier=1,data=ordered)

#remount /system read-write, using the values obtained:
mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system

#edit /etc/hosts
vi /etc/hosts
# put a comment-sign (#) in front of the line containing the bad IP, e.g.
# 74.125.93.113 android.clients.google.com
# save the file

# re-mount /system read-only (or simply reboot, that will do it as well)
mount -o ro,remount -t ext3 /dev/block/mmcblk1p21 /system

Ahora solo espere un momento, o simplemente acceda a Google Play para verificar. No debería pasar mucho tiempo para que las luces se vuelvan verdes nuevamente.

Tengo curiosidad: ¿cómo llegó esa entrada a su /etc/hosts en primer lugar?
Yo no :) El dispositivo en cuestión ejecuta CM7.2 (un Motorola Milestone 2). Como nunca cambié nada manualmente /system(esta solución fue la primera vez que realmente monté /systemlectura y escritura), solo puedo suponer que CM o el que ajustaba la ROM (chillje) lo había colocado allí. No estoy seguro de quién, pero de cualquier manera: no soy el único que ejecuta esta ROM, por lo que otros también podrían verse afectados, por lo que publiqué este tutorial aquí.