2013-05-16 19 views
65

Sto provando i nuovi servizi di giochi di Google Play.Inizializzazione del client di giochi su Android

All'inizio ho seguito questa guida https://developers.google.com/games/services/android/quickstart e poi finito questo https://developers.google.com/games/services/android/init

mi finiscono così:

05-16 20:01:39.034: E/AndroidRuntime(18257): FATAL EXCEPTION: main 
05-16 20:01:39.034: E/AndroidRuntime(18257): java.lang.IllegalStateException: A fatal developer error has occurred. Check the logs for further information. 
05-16 20:01:39.034: E/AndroidRuntime(18257): at com.google.android.gms.internal.p$f.a(Unknown Source) 
05-16 20:01:39.034: E/AndroidRuntime(18257): at com.google.android.gms.internal.p$f.a(Unknown Source) 
05-16 20:01:39.034: E/AndroidRuntime(18257): at com.google.android.gms.internal.p$b.p(Unknown Source) 
05-16 20:01:39.034: E/AndroidRuntime(18257): at com.google.android.gms.internal.p$a.handleMessage(Unknown Source) 
05-16 20:01:39.034: E/AndroidRuntime(18257): at android.os.Handler.dispatchMessage(Handler.java:99) 
05-16 20:01:39.034: E/AndroidRuntime(18257): at android.os.Looper.loop(Looper.java:137) 
05-16 20:01:39.034: E/AndroidRuntime(18257): at android.app.ActivityThread.main(ActivityThread.java:5041) 
05-16 20:01:39.034: E/AndroidRuntime(18257): at java.lang.reflect.Method.invokeNative(Native Method) 
05-16 20:01:39.034: E/AndroidRuntime(18257): at java.lang.reflect.Method.invoke(Method.java:511) 
05-16 20:01:39.034: E/AndroidRuntime(18257): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
05-16 20:01:39.034: E/AndroidRuntime(18257): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
05-16 20:01:39.034: E/AndroidRuntime(18257): at dalvik.system.NativeStart.main(Native Method) 

Ho provato a seguire la guida passo per passo. Non capisco cosa sta andando storto.

ava.lang.IllegalStateException: si è verificato un errore irreversibile per lo sviluppatore. Controlla i log per ulteriori informazioni.

Ho pensato che logcat = logs e non c'è altro. Quindi dove posso trovare questi "log"?

La mia implementazione è diversa solo in una cosa. Ho un ClasseA che si estende BaseGameActivity e poi ClassB che si estende ClassA e implementa View.OnClickListener Così ho tutti i metodi da https://developers.google.com/games/services/android/init in classe ClassB

Grazie per qualsiasi aiuto

risposta

123

Ho avuto lo stesso problema inizialmente. Quello che dovevo fare era guardare il log LogCat completo e non filtrato. Lì, ho visto il messaggio:

GamesIntentService (17929): Utilizzo di Google Play Services giochi richiede un tag di metadati con il nome "com.google.android.gms.games.APP_ID" nel tag applicazione del manifesto

Quindi, supponendo che ha creato una voce nel strings.xml chiamato app_id, prova ad aggiungere il seguente al vostro AndroidManifest.xml sotto la <application> tag:

<meta-data android:name="com.google.android.gms.games.APP_ID" 
     android:value="@string/app_id" /> 

potete trovare il tuo APP_ID nelle giochi Servizi scheda

**Games Services** tab

+8

facepalm - L'ho avuto in 'AndroidManifest.xml' ma non sul mio' ' etichetta. grazie – Semanticer

+5

In aggiunta, non sostituire ".APP_ID" con il tuo ID APP dalla console degli sviluppatori. Ho perso circa 15 minuti con quello: | – RelativeGames

+32

Un'altra aggiunta, non inserire l'ID app direttamente nel tag meta-dati. È risolto come numero intero quando il sistema si aspetta che sia una stringa: | – Finnboy11

18

complemento Hetabiquo risposta, se si utilizza anche salvataggio sulla cloud servizio nel vostro gioco è necessario anche aggiornare AndroidManifest.xml dell'applicazione aggiungendo il seguente tag meta-dati all'interno di portata <application> tag

<meta-data android:name="com.google.android.gms.appstate.APP_ID" android:value="@string/app_id" /> 
+0

Grazie bro! Si trattava di – cesarferreira

+0

helloe @Diego Palomar nella mia app sono già definito app_id ma ha chiamato solo valori numerici consentiti ma nel mio caso ID app creato utilizzando console.google.developer, come 123-30abcd.apps.googleusercontent.com, quindi come può utilizzare il mio ID app che ho di fronte illegalstateException a causa di esso, per favore dammi la soluzione –

+0

@NiravMehta: utilizza il numero prima del trattino in quella lunga stringa (ID cliente) che vedi in Google Developers Console. –

2

Appena avuto lo stesso problema, ma aveva il meta-tag corretto - ho fatto loo carica il logcat non filtrato e scopri che stava cercando un metatag diverso.

Il nome del meta-tag differisce dal tipo di numero cliente inviato nel Costruttore GameHelper (se lo si utilizza).

new GameHelper(this, GameHelper.CLIENT_GAMES); 

Per quanto mi riguarda ho accidentalmente CLIENT_ALL utilizzato, che porta ad un errate aspettative del nome del meta-tag. L'ho modificato in CLIENT_GAMES e tutto ha funzionato perfettamente.

1

Oltre a Hetabiquo, è possibile pinna tuo APP_ID nelle giochi Servizi scheda:

**Games Services** tab

Problemi correlati