72 votes

Le paquet com.google.Android.gsf n'a pas pu être trouvé

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 ; j'ai ensuite appliqué les exigences à mon application, puis j'ai créé un nouveau dispositif virtuel avec l'API 16.

Mais lorsque j'essaie d'enregistrer mon appareil dans GCM, il é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.

140voto

thepoosh Points 5941

Il me semble que vous n'utilisez pas le bon émulateur.

L'émulateur par défaut utilise un émulateur Android ordinaire qui ne dispose d'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 de Google.

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

Bonne chance.

11voto

Il s'exécute probablement sur un appareil qui ne prend pas en charge le GCM, de sorte que votre appel à GCMRegistrar.checkDevice( this ) ; lève une exception. Vérifiez votre logcat pour vous en assurer.

Si vous le testez sur un émulateur, assurez-vous que celui-ci est configuré pour utiliser les API de Google. Lorsque vous créez l'émulateur, la fenêtre de création d'un nouvel AVD comporte une case "Cible". Dans ce champ, sélectionnez "Google APIs".

enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X