2012-07-05 10 views
72

Próbuję użyć nowego systemu Google Cloud Messaging, ale mam pewne problemy.com.google.android.gsf pakiet nie został znaleziony

Przeczytałem dokument Pierwsze kroki i sprawdzoną aplikację demonstracyjną; potem zastosowałem wymagania do mojej aplikacji następnie stworzyłem nowe urządzenie wirtualne z API 16.

Ale gdy próbuję zarejestrować urządzenie do GCM, to nie z powodu tej linii:

GCMRegistrar.checkDevice(getApplicationContext()); 

W LogCat widzę te błędy:

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) 

miałem dodaną gcm.jar na mojej ścieżce klasy; Nie wiem, co jest nie tak.

+6

Czy używasz emulatora? jeśli tak, to jest emulator Google API? jeśli nie, to jest twój problem – thepoosh

+0

Tak, próbuję na emulatorze. –

+2

czy to emulator Google API? – thepoosh

Odpowiedz

140

wydaje mi się, że używasz niewłaściwego emulatora.

Domyślny emulator używa zwykłego emulatora Androida, który nie ma żadnych pakietów Google i nie może uruchamiać różnego rodzaju rzeczy, takich jak mapy, c2dm i wszelkiego rodzaju podobne rzeczy.

co chcesz zrobić, to stworzyć nowy emulator, który może obsługiwać API Google.

następnie, po uruchomieniu projektu, wybierz emulatora, który działa Nazwa docelowa Google APIs (Google Inc).

powodzenia.

+2

Przydatny link w przypadku, gdy nie możesz znaleźć pakietu Google APIs dla poziomu interfejsu API w Menedżerze Menedżera Android SDK: http://stackoverflow.com/a/7860557/775437 – mjama

+0

dzięki, że Twoja odpowiedź była przydatna. –

+0

zawsze przyjemność – thepoosh

11

To chyba działa na urządzeniu, które nie obsługuje GCM, więc wezwanie do GCMRegistrar.checkDevice (this); rzuca wyjątek. Sprawdź swój logcat, aby się upewnić.

Jeśli testujemy go na emulatorze, upewnij się, że masz emulator skonfigurowany do korzystania z API Google. Podczas tworzenia emulatora nowe okno AVD tworzy pole "Cel". Wybierz coś w tym polu, które mówi "Google APIs".

enter image description here

+0

dziękuję za przesłanie przechwytywania. Łatwy do podążania – beginners