当我尝试将其与Google Play游戏连接时,我的游戏停止了。它工作正常。但突然间发生了这种情况。它显示发生了开发错误。这是logcat。
07:34.150 2144-2144/com.sennovations.countermaster E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.sennovations.countermaster, PID: 2144
java.lang.IllegalStateException: A fatal developer error has occurred. Check the logs for further information.
at com.google.android.gms.common.internal.zze.zzs(Unknown Source)
at com.google.android.gms.common.internal.zzi.zzrk(Unknown Source)
at com.google.android.gms.common.internal.zzh.handleMessage(Unknown Source)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5637)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)
我在清单中添加了元标记。
<meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/app_id" />
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
任何帮助将不胜感激。感谢
答案 0 :(得分:0)
根据您的评论,我推断这不是您的问题,但是当我遇到类似的错误时,我解决了以下问题,我将添加以下答案:
Google的文档(here, for instance)目前指示我们添加
compile 'com.google.android.gms:play-services:11.0.4'
到build.gradle
。请注意,它目前建议使用版本11.0.4。谷歌补充说:
每次更新Google Play服务时,请务必更新此版本号。
这一行似乎很可能是一些有史以来最糟糕的建议。
为什么呢?有两个原因。
假设您使用免费BaseGameUtils, Google本身鼓励。其build.gradle
设置为使用版本8.4.0:
ext.gms_library_version = '8.4.0'
我这样做了,并使用网页的建议来使用版本11.0.4。图书馆编号的分歧导致应用程序在Android Studio模拟器和上崩溃,测试设备的堆栈跟踪类似于上面的那个。
公平地说,Android Studio会警告你不同的版本号可能会出错:如果你打开清单文件,它会强调版本号并发出两声不同的呜呜声版本号,它甚至会告诉你哪些版本号不同意,但是 - 这是关键 - 它不会告诉你在哪里可以找到具有不同版本号的其他文件。如果要导入多个库,和/或在GitHub或其他地方编译依赖项,找到原因可能会有点挑战。
如果您的应用请求Play游戏服务11.0.4,但您的模拟器和/或手机版本号较低(例如,我的模拟器上的版本为11.0.2),那么游戏API&#39; { {1}}会将状态connect()
提供给RESULT_CANCEL
。关于这些结果代码的文档leaves something to be desired,所以这可能需要一段时间来调试 - 事实上,我认为我认为上面的崩溃是我唯一的问题,即问题可能与API版本号有关。
有一种方法可以检查设备是否支持所请求的API,但Google的大部分文档都没有告诉您这样做,甚至onActivityResult()
似乎也没有检查一下。 (You want to look at GoogleApiAvailability.GOOGLE_PLAY_SERVICES_VERSION_CODE
.)
在我的特定情况下,通过将我的应用程序的播放服务版本更改为8.4.0来解决问题。现在工作得非常好。