No se pudo encontrar el paquete com.google.android.gsf

Estoy intentando utilizar el nuevo sistema de mensajería de Google Cloud, pero tengo algunos problemas.

Leí el documento Introducción y revisé la aplicación de demostración; Después de que apliqué requisitos a mi aplicación entonces creé un nuevo dispositivo virtual con API 16.

Pero cuando intento registrar mi dispositivo en GCM, falla debido a esta línea:

GCMRegistrar.checkDevice(getApplicationContext()); 

En logcat veo estos errores:

 07-05 07:06:31.925: E/AndroidRuntime(691): FATAL EXCEPTION: main 07-05 07:06:31.925: E/AndroidRuntime(691): java.lang.UnsupportedOperationException: Device does not have package com.google.android.gsf 07-05 07:06:31.925: E/AndroidRuntime(691): at com.google.android.gcm.GCMRegistrar.checkDevice(GCMRegistrar.java:83) 07-05 07:06:31.925: E/AndroidRuntime(691): at aero.tav.mobile.genel$4.onClick(genel.java:201) 07-05 07:06:31.925: E/AndroidRuntime(691): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166) 07-05 07:06:31.925: E/AndroidRuntime(691): at android.os.Handler.dispatchMessage(Handler.java:99) 07-05 07:06:31.925: E/AndroidRuntime(691): at android.os.Looper.loop(Looper.java:137) 07-05 07:06:31.925: E/AndroidRuntime(691): at android.app.ActivityThread.main(ActivityThread.java:4745) 07-05 07:06:31.925: E/AndroidRuntime(691): at java.lang.reflect.Method.invokeNative(Native Method) 07-05 07:06:31.925: E/AndroidRuntime(691): at java.lang.reflect.Method.invoke(Method.java:511) 07-05 07:06:31.925: E/AndroidRuntime(691): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 07-05 07:06:31.925: E/AndroidRuntime(691): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 07-05 07:06:31.925: E/AndroidRuntime(691): at dalvik.system.NativeStart.main(Native Method) 

Había agregado gcm.jar a mi ruta de clase; No sé qué es lo que está mal.

Me parece que estás usando el emulador equivocado.

El emulador predeterminado utiliza un emulador regular de Android que no tiene paquetes de Google y no puede ejecutar todo tipo de cosas como mapas, c2dm y todo tipo de cosas como esa.

Lo que quieres hacer es crear un nuevo emulador que admita las API de Google.

A continuación, cuando ejecute el proyecto, elija el emulador que ejecuta el nombre de destino Google APIs (Google Inc).

buena suerte.

Es probable que se ejecuta en un dispositivo que no es compatible con GCM, por lo que su llamada a GCMRegistrar.checkDevice (este); Está lanzando una excepción. Compruebe su logcat para estar seguro.

Si lo está probando en un emulador, asegúrese de tener el emulador configurado para utilizar las API de Google. Cuando crea el emulador, la ventana create new AVD tiene un cuadro "Target". Seleccione algo en ese cuadro que diga "API de Google".

Introduzca aquí la descripción de la imagen

  • ¿Cómo los servidores de la conexión GCM envían mensajes a un dispositivo Android?
  • Cómo almacenar únicamente un ID de registro de GCM en MySQL
  • Difundir una notificación a todos los dispositivos registrados
  • GCM elimina el ID de registro antiguo si el usuario instala la aplicación de nuevo inmediatamente después de la desinstalación?
  • ¿Existe un patrón de registro de GCM?
  • Lista blanca de claves de la barra de herramientas de Google Cloud Messaging direcciones IP con escala automática
  • Monitoreo de la entrega de Android GCM
  • Iniciador de backend móvil ausente de la consola de nube
  • Registro de GCM: SERVICIO NO DISPONIBLE en la red móvil
  • Problema con GCM. Manifiesto malformado como resultado de mayúsculas en el nombre del paquete
  • GCM getToken () envía java.io.IOException: TIMEOUT
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.