Le package com.google.android.gsf est introuvable

J’essaie d’utiliser le nouveau système Google Cloud Messaging mais j’ai quelques problèmes.

J’ai lu le document Getting Started et examiné l’application de démonstration; Après cela, j’ai appliqué les exigences à mon application, puis j’ai créé un nouveau périphérique virtuel avec API 16.

Mais lorsque j’essaie d’enregistrer mon appareil sur GCM, cela échoue à cause de cette ligne:

GCMRegistrar.checkDevice(getApplicationContext()); 

Dans logcat je vois ces erreurs:

 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) 

J’avais ajouté gcm.jar à mon chemin de classe; Je ne sais pas ce qui ne va pas.

il me semble que vous utilisez le mauvais émulateur.

L’émulateur par défaut utilise un émulateur Android standard qui ne contient aucun paquet Google et ne peut pas exécuter toutes sortes de choses comme des cartes, c2dm et toutes sortes de choses comme ça.

Ce que vous voulez faire, c’est créer un nouvel émulateur capable de prendre en charge les API Google.

puis, lorsque vous exécutez le projet, choisissez l’émulateur qui exécute le nom cible des Google APIs (Google Inc).

bonne chance.

Il fonctionne probablement sur un périphérique qui ne prend pas en charge GCM, donc votre appel à GCMRegistrar.checkDevice (this); jette une exception. Vérifiez votre logcat pour être sûr.

Si vous le testez sur un émulateur, assurez-vous que l’émulateur est configuré pour utiliser les API de Google. Lorsque vous créez l’émulateur, la fenêtre Créer un nouvel AVD comporte une case “Cible”. Sélectionnez quelque chose dans cette case qui indique “API Google”.

entrer la description de l'image ici