在Android中初始化Games Client


68

我正在尝试新的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 =日志,仅此而已。那么我在哪里可以找到这些“日志”?

我的实现仅在一件事上有所不同。我有一个扩展BaseGameActivity的ClassA,然后有扩展ClassA并实现View.OnClickListener的ClassB,所以我在ClassB类中拥有https://developers.google.com/games/services/android/init中的所有方法

谢谢你的帮助

Answers:


126

最初我有同样的问题。我要做的是查看完整的,未经过滤的LogCat日志。在那里,我看到了以下消息:

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

因此,假设您在strings.xml被称为中创建了一个条目,请app_id尝试AndroidManifest.xml<application>标记下添加以下内容:

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

您可以在“游戏服务”标签中找到自己的APP_ID

**游戏服务**标签


8
facepalm-我已经装上了,AndroidManifest.xml但没有在我的<application>标签上。谢谢
语义的

5
另外,请不要使用开发者控制台中的APP ID替换“ .APP_ID”。我为此损失了大约15分钟:|
RelativeGames

34
另外,请勿将您的应用ID直接放在元数据标签中。当系统期望它是String时,它将解析为整数:|
Finnboy11年

4
另外,“未过滤的日志”意味着检查完整的设备日志,而不是一次检查特定于应用程序的日志。Google Play服务不是您的应用程序的一部分,因此错误消息未记录在您的应用程序中。
you786 2013年

抱歉,如果这是一个愚蠢的问题,但是在那里键入APP_ID会是什么?我对Android开发非常陌生。
d0n.key,2015年

18

作为Hetabiquo响应的补充,如果您还在游戏中使用Cloud Save服务,则还必须通过在<application>标签范围内添加以下元数据标签来更新应用程序的AndroidManifest.xml。

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

多谢兄弟!就是这样
cesarferreira 2014年

helloe @Diego Palomar在我的应用程序中,我已经定义了app_id,但它仅调用了允许的数字,但在我的情况下,使用console.google.developer创建了应用程序ID,例如123-30abcd.apps.googleusercontent.com,那么如何使用我的应用程序id我因此而面临非法状态异常,请给我解决方案
Nirav Mehta 2014年

@NiravMehta:使用您在Google Developers Console中看到的长字符串(客户端ID)中的破折号前的数字。
ΕГИІИО

我也尝试这样做,但是发生错误 “尚未连接”
Nirav Mehta 2014年

尝试清除设备上的Google Play服务应用缓存。
ΕГИІИО

2

只是遇到了同样的问题,但是元标记正确-我确实查找了未过滤的logcat,发现它正在搜索其他元标记。

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

new GameHelper(this, GameHelper.CLIENT_GAMES);

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


1

除了Hetabiquo之外,您还可以在Games Services标签中找到APP_ID :

**游戏服务**标签


0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.