2012-07-05 21 views
72

Sto tentando di utilizzare il nuovo sistema di Google Cloud Messaging ma ho alcuni problemi.Il pacchetto com.google.android.gsf non è stato trovato

Ho letto il documento Getting Started e l'app demo recensita; dopo che ho applicato requisiti alla mia domanda poi creato un nuovo dispositivo virtuale con API 16.

Ma quando provo a registrare il mio dispositivo di GCM, viene a mancare a causa di questa linea:

GCMRegistrar.checkDevice(getApplicationContext()); 

In logcat Vedo questi errori:

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) 

Ho aggiunto gcm.jar al mio percorso di classe; Non so cosa c'è che non va.

+6

stai utilizzando l'emulatore? se è così l'emulatore dell'API di Google? se non è questo il tuo problema – thepoosh

+0

sì sto provando all'emulatore. –

+2

è l'emulatore dell'API di Google? – thepoosh

risposta

140

mi sembra che tu stia utilizzando l'emulatore sbagliato.

L'emulatore predefinito utilizza un normale emulatore Android che non ha pacchetti Google e non può eseguire tutti i tipi di cose come mappe, c2dm e tutti i tipi di cose del genere.

quello che vuoi fare è creare un nuovo emulatore in grado di supportare le API di Google.

poi, quando si esegue il progetto, scegliere l'emulatore che corre il nome di destinazione Google APIs (Google Inc).

buona fortuna.

+2

Link utile nel caso in cui non sia possibile trovare il pacchetto API di Google per il livello API in Android SDK Manager: http://stackoverflow.com/a/7860557/775437 – mjama

+0

grazie Ho trovato la tua risposta utile. –

+0

sempre un piacere – thepoosh

11

Probabilmente è in esecuzione su un dispositivo che non supporta GCM, quindi la chiamata a GCMRegistrar.checkDevice (this); sta facendo un'eccezione Controlla la tua logcat per essere sicuro.

Se lo stai testando su un emulatore, assicurati di avere impostato l'emulatore per utilizzare le API di Google. Quando crei l'emulatore, la finestra Crea nuovo AVD ha una casella "Target". Seleziona qualcosa in quella casella che dice "API di Google".

enter image description here

+0

grazie per aver caricato l'acquisizione. facile da seguire – beginners

Problemi correlati