在Android中初始化游戏客户端

时间:2013-05-16 18:52:24

标签: android google-play-services

我正在尝试新的Google Play游戏服务。

起初我按照这个方法https://developers.google.com/games/services/android/quickstart 然后完成了这个https://developers.google.com/games/services/android/init

我最终是这样的:

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)

我试图一步一步地遵循教程。我不明白出了什么问题。

  

ava.lang.IllegalStateException:发生了致命的开发人员错误。查看日志以获取更多信息。

我认为logcat = logs并没有更多。那我在哪里可以找到这些“日志”?

我的实现只有一点不同。我有一个扩展BaseGameActivity的ClassA,然后是ClassB,它扩展了ClassA并实现了View.OnClickListener 所以我在ClassB类中有https://developers.google.com/games/services/android/init的所有方法

感谢您的帮助

5 个答案:

答案 0 :(得分:126)

我最初遇到了同样的问题。我要做的就是查看完整的,未经过滤的LogCat日志。在那里,我看到了这样的信息:

  

GamesIntentService(17929):使用Google Play游戏服务需要在清单的应用标记中使用名称为“com.google.android.gms.games.APP_ID”的元数据标记

因此,假设您在名为strings.xml的{​​{1}}中创建了一个条目,请尝试将以下内容添加到app_id标记下的AndroidManifest.xml

<application>

您可以在游戏服务标签

中找到您的APP_ID

**Games Services** tab

答案 1 :(得分:18)

补充 Hetabiquo 响应,如果您还在游戏中使用云端保存服务,则还必须通过在内部添加以下元数据标记来更新应用程序的AndroidManifest.xml <application>标记范围

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

答案 2 :(得分:2)

刚出现同样的问题,但是元标记是正确的 - 我确实查找了未经过滤的logcat并发现它正在搜索不同的元标记。

元标记的名称因您在GameHelper构造函数中提交的客户编号的类型而不同(如果您使用它)。

new GameHelper(this, GameHelper.CLIENT_GAMES);

对我来说,我偶然使用了CLIENT_ALL,这导致对元标记名称的错误期望。我将其更改为CLIENT_GAMES,一切顺利。

答案 3 :(得分:1)

Hetabiquo 外,您还可以在游戏服务标签中找到您的APP_ID:

**Games Services** tab

答案 4 :(得分:0)

我很长时间以来都遭受了这个错误的困扰。我决定遍历basegameutils包,一次扫描每个文件。在gameHelperUtils类中,我找到了此方法getAppIdFromResource()。在其中,它从资源请求了应用程序ID。我记得我已经在清单文件中对应用程序ID进行了硬编码。然后,我在字符串文件中添加了app_id的字符串资源。令我惊讶的是,错误消失了,排行榜出现了!