web-dev-qa-db-fra.com

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 de mise en route 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 l'API 16.

Mais lorsque j'essaie d'enregistrer mon appareil auprès de 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.

72
bahadir arslan

il me semble que vous utilisez le mauvais émulateur.

L'émulateur par défaut utilise un émulateur standard Android) qui ne contient aucun package Google et ne peut pas exécuter toutes sortes de tâches, telles que des cartes, c2dm, etc.

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 de la cible Google APIs (Google Inc).

bonne chance.

140
thepoosh

Il fonctionne probablement sur un appareil qui ne prend pas en charge GCM, alors appelez GCMRegistrar.checkDevice (this); lance 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 Google. Lorsque vous créez l'émulateur, la fenêtre Créer un nouveau fichier AVD comporte une zone "Cible". Sélectionnez quelque chose dans cette zone qui dit "API Google".

enter image description here

11
Jigar Brahmbhatt