Das Paket com.google.android.gsf wurde nicht gefunden

72

Ich versuche, ein neues Google Cloud Messaging-System zu verwenden, habe jedoch einige Probleme.

Ich habe das Dokument Erste Schritte gelesen und die Demo-App überprüft. Danach habe ich Anforderungen an meine Anwendung angewendet und dann ein neues virtuelles Gerät mit API 16 erstellt.

Wenn ich jedoch versuche, mein Gerät bei GCM zu registrieren, schlägt dies aufgrund der folgenden Zeile fehl:

GCMRegistrar.checkDevice(getApplicationContext()); 

In logcat sehe ich folgende Fehler:

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)

Ich hatte meinem Klassenpfad gcm.jar hinzugefügt. Ich weiß nicht, was los ist.

Bahadir Arslan
quelle
6
Verwenden Sie den Emulator? Wenn ja, ist es der Google API-Emulator? wenn nicht, ist das dein Problem
thepoosh
2
ist es der Google API-Emulator?
Thepoosh
2
Ich habe es jetzt überprüft, ich denke es ist nicht, es ist Android 4.1 API 16. Es gab zwei verschiedene Emulatoren für API 16. Welchen sollte ich verwenden?
Bahadir Arslan
3
derjenige, der die Google-API hat, sollte der Google APIs (Google Inc).
Zielname
Ich habe eine erstellt, wie Sie jetzt vorgeschlagen haben, und es erneut versucht.
Bahadir Arslan

Antworten:

140

Mir scheint, Sie verwenden den falschen Emulator.

Der Standardemulator verwendet einen normalen Android-Emulator, der keine Google-Pakete enthält und nicht alle möglichen Dinge wie Karten, c2dm und solche Sachen ausführen kann.

Sie möchten lediglich einen neuen Emulator erstellen, der die Google-APIs unterstützt.

Wählen Sie dann beim Ausführen des Projekts den Emulator aus, auf dem der Zielname ausgeführt wird Google APIs (Google Inc).

Viel Glück.

thepoosh
quelle
2
Nützlicher Link für den Fall, dass Sie das Google APIs-Paket für Ihre API-Ebene im Android SDK-Manager nicht finden können: stackoverflow.com/a/7860557/775437
mjama
Wirklich sehr hilfreich! Danke
Jaym
11

Es wird wahrscheinlich auf einem Gerät ausgeführt, das GCM nicht unterstützt. Rufen Sie daher GCMRegistrar.checkDevice auf (this). wirft eine Ausnahme. Überprüfen Sie Ihren Logcat, um sicherzugehen.

Wenn Sie es auf einem Emulator testen, stellen Sie sicher, dass der Emulator für die Verwendung von Google-APIs eingerichtet ist. Wenn Sie den Emulator erstellen, enthält das Fenster "Neues AVD erstellen" das Feld "Ziel". Wählen Sie in diesem Feld "Google APIs" aus.

Geben Sie hier die Bildbeschreibung ein

Jigar Brahmbhatt
quelle