Actualizar Google Play Services en un AVD anterior a KitKat

Antes Google tenía la sana costumbre de actualizar regularmente sus imágenes de AVD (Android Virtual Device) con las últimas versiones de Google Play Services. Esto permitía que desarrolladores que no dispongan de varios teléfonos puedan probar sus aplicaciones, si de GPS (GMS) dependen, de una manera sencilla.

Google-Play-services

Sin embargo, me topé con el problema de que la imagen de sistema de Android 4.3 (API level 18) disponible a través del SDK Manager cuenta con la versión de Play Services 3.0.X, estando actualmente en la 5.0.89. Así, si estas testeando una aplicación que los necesite, te saltará el error GooglePlayServices not available due to error 2 a través de logcat, que significa, como era de esperar, que “están disponibles pero desactualizados”, y por lo tanto no pueden usarse, a pesar de que se trate de alguna funcionalidad sí incluida en esa versión. Lo primero que intenté fue bajarme los Play Services de Internet e instalarlos mediante ADB, pero parece ser que la versión distribuida a través de Play Store está firmada con una firma distinta a la que se reparte en los AVD.

Pero como no soy de quedarme de brazos cruzados, encontrado el problema, buscada la solución. Necesitaremos un AVD que corra las Google APIs nivel 19, correspondiente a KitKat (que sí traen los últimos Google Play Services), y otro AVD, el desactualizado, que sea también Google APIs nivel <18 (Jelly Bean, Ice Cream Sandwich etc). Para no pasar mucho tiempo esperando, los tendremos funcionando (si nuestro ordenador lo permite) al mismo tiempo. Si haces primero un paso y luego el otro, puedes ignorar la parte de los comandos tachada de rojo.

Así que desde la carpeta /sdk/platform-tools (donde sea que tengas el SDK) ejecutaremos lo siguiente.


./adb -s <emulator-kitkat> pull -p “/system/priv-app/PrebuiltGmsCore.apk” <directorio-destino>

./adb -s <emulator-jellybean> install -r <directorio-destino>/PrebuiltGmsCore.apk


El “emulator-kitkat” y “emulator-jellybean” los tendrás que sustituir por sus correspondientes nombres, que podrás encontrar ejecutando:


./adb devices


Gracias, Google, por seguir poniendo piedras en el camino. No es tan difícil dar una imagen actualizada, de verdad.

Deja un comentario