2012-07-05 27 views
72

Estoy tratando de usar el nuevo sistema de Google Cloud Messaging, pero tengo algunos problemas.com.google.android.gsf no se pudo encontrar el paquete

Leí el documento Getting Started y revisé la aplicación de demostración; después de eso he aplicado a mi solicitud requisitos Entonces creó un nuevo dispositivo virtual con API 16.

Pero cuando intento registrar mi dispositivo a GCM, se produce un error 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) 

He añadido gcm.jar a mi ruta de clase; No sé lo que está mal.

+6

¿Estás usando el emulador? si es así, ¿es el emulador de la API de Google? si no ese es tu problema – thepoosh

+0

sí, estoy tratando de emular. –

+2

¿es el emulador de la API de Google? – thepoosh

Respuesta

140

me parece que estás usando el emulador incorrecto.

El emulador predeterminado usa un emulador de Android normal que no tiene ningún paquete de Google y no puede ejecutar todo tipo de cosas como mapas, c2dm y todo tipo de cosas así.

lo que quiere hacer es crear un nuevo emulador que pueda admitir las API de Google.

entonces, cuando se ejecuta el proyecto, elija el emulador que corre el nombre de destino Google APIs (Google Inc).

buena suerte.

+2

Enlace útil en caso de que no pueda encontrar el paquete de API de Google para su nivel de API en el Administrador de Android SDK: http://stackoverflow.com/a/7860557/775437 – mjama

+0

gracias Me pareció útil su respuesta. –

+0

siempre es un placer – thepoosh

11

Probablemente se está ejecutando en un dispositivo que no es compatible con GCM, por lo que su llamada a GCMRegistrar.checkDevice (esto); está lanzando una excepción. Verifique su logcat para estar seguro.

Si está probando en un emulador, asegúrese de tener el emulador configurado para usar las API de Google. Cuando crea el emulador, la ventana Crear AVD nueva tiene un cuadro "Destino". Seleccione algo en ese cuadro que dice "API de Google".

enter image description here

+0

gracias por cargar la captura. fácil de seguir – beginners

Cuestiones relacionadas