Android libgdx:使用 Google Play 服务时出错
Posted
技术标签:
【中文标题】Android libgdx:使用 Google Play 服务时出错【英文标题】:Android libgdx: error while using Google Play Services 【发布时间】:2016-03-14 11:17:15 【问题描述】:我正在使用 Libgdx 为 android 开发游戏。 几周前,我开始从 Google Play Services 为游戏实施一些服务。 我关注了this guide
并且我能够成功实施该服务。
昨天我打开 SDK 并决定上传 Google Play Services 包(因为 AdMob 出现错误),这是我犯过的最大错误。
我现在不知道发生了什么;最初的主要错误是关于 google-play-services-lib 的 AndroidManifest,它的目标是一个尚未安装的 sdk。 我决定安装那个 sdk 版本(顺便说一下,api 9 ...(过时)),但现在我的应用程序在启动时崩溃了。
我尝试重置所有内容并重复我上面链接的指南的步骤,但它仍然不起作用。
这是应用程序启动时的位置:
12-09 09:29:41.681: I/art(20196): Late-enabling -Xcheck:jni
12-09 09:29:41.862: I/Adreno-EGL(20196): <qeglDrvAPI_eglInitialize:379>: QUALCOMM Build: 09/02/15, 76f806e, Ibddc658e36
12-09 09:29:41.966: D/AndroidRuntime(20196): Shutting down VM
12-09 09:29:41.966: D/AndroidRuntime(20196): --------- beginning of crash
12-09 09:29:41.967: E/AndroidRuntime(20196): FATAL EXCEPTION: main
12-09 09:29:41.967: E/AndroidRuntime(20196): Process: com.gamestudio.gameapp.android, PID: 20196
12-09 09:29:41.967: E/AndroidRuntime(20196): java.lang.RuntimeException: Unable to start activity ComponentInfocom.gamestudio.gameapp.android/com.gamestudio.gameapp.android.AndroidLauncher: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.example.games.basegameutils.GameHelper.onStart(android.app.Activity)' on a null object reference
12-09 09:29:41.967: E/AndroidRuntime(20196): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
12-09 09:29:41.967: E/AndroidRuntime(20196): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
12-09 09:29:41.967: E/AndroidRuntime(20196): at android.app.ActivityThread.-wrap11(ActivityThread.java)
12-09 09:29:41.967: E/AndroidRuntime(20196): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
12-09 09:29:41.967: E/AndroidRuntime(20196): at android.os.Handler.dispatchMessage(Handler.java:102)
12-09 09:29:41.967: E/AndroidRuntime(20196): at android.os.Looper.loop(Looper.java:148)
12-09 09:29:41.967: E/AndroidRuntime(20196): at android.app.ActivityThread.main(ActivityThread.java:5417)
12-09 09:29:41.967: E/AndroidRuntime(20196): at java.lang.reflect.Method.invoke(Native Method)
12-09 09:29:41.967: E/AndroidRuntime(20196): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
12-09 09:29:41.967: E/AndroidRuntime(20196): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
12-09 09:29:41.967: E/AndroidRuntime(20196): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.example.games.basegameutils.GameHelper.onStart(android.app.Activity)' on a null object reference
12-09 09:29:41.967: E/AndroidRuntime(20196): at com.gamestudio.gameapp.android.AndroidLauncher.onStart(AndroidLauncher.java:101)
12-09 09:29:41.967: E/AndroidRuntime(20196): at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1237)
12-09 09:29:41.967: E/AndroidRuntime(20196): at android.app.Activity.performStart(Activity.java:6253)
12-09 09:29:41.967: E/AndroidRuntime(20196): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379)
12-09 09:29:41.967: E/AndroidRuntime(20196): ... 9 more
我认为这个问题与被入侵的 libgdx 项目有关。 例如,R 类未正确编译,因为我的项目的某些值不再从 R 中可见。
感谢您的帮助。
卢卡
**更新的问题**
我正在使用日食
【问题讨论】:
我希望你没有使用 eclipse。你是吗? 是的...在我的辩护中,我只能说我在 Google 不再支持 Eclipse 之后开始了这个项目...但是,正如我所说,在我更新之前,alla 工作得很好谷歌播放包。 不久前同样的问题困扰着我,我也在使用 eclipse。只要你不使用像 play services eclipse 这样的库就可以正常工作,但在你的情况下,我认为改为使用 Idea。 您能出示您的AndroidLauncher.java
代码吗?
我认为 BaseGameUtils 项目中的错误是指新的游戏播放服务库中不再存在的旧版本的支持库。我正在尝试下载旧版本的 game-play-services-lib(我没有副本,因为我很愚蠢)。我认为解决方案在这个答案中:***.com/a/33855328/1540840
【参考方案1】:
我解决了这个问题。 问题是:由于我没有使用 Android Studio 进行开发,因此存在很多与依赖项管理相关的问题。 我按照本指南this guide 实施游戏服务。 现在指南说您必须将 BaseGameUtils 和 google-play-services-lib 作为“库项目”导入,然后将 BaseGameUtils 项目的引用添加到您想要的所有项目中。
指南没有说的是 BaseGameUtils 项目需要特定版本的 google-play-services-lib。 这没有指定,因为如果您使用的是 Android Studio,所有依赖项都将由 Grandle 处理;实际上,如果您查看 BaseGameUtils 项目的 build.grandle 文件,您会发现它需要 google-play-services-lib.8.1.0。
因为我已经从 SDK 管理器更新了 google-play-services-lib,并且因为我不知道 BaseGameUtils 的依赖关系,所以在引用新版本中不再包含的方法时出现了很多问题的 google-play-services-lib。
知道我找到了 google-play-sdk-lib 的旧版本,我再次按照上面链接的指南进行操作。
我认为这是包含 BaseGameUtils 库的最糟糕的方式,但是......自从我开始这个项目时,安卓仍然支持 ecplise......
还是谢谢你,
卢卡
【讨论】:
以上是关于Android libgdx:使用 Google Play 服务时出错的主要内容,如果未能解决你的问题,请参考以下文章
libGDX Google Play 游戏服务 - Android
libGDX - Android Studio 中的 Google Play 游戏服务
使用 google Play 游戏服务配置 LIBGDX 游戏错误
带有 libgdx 游戏的 Android 应用一旦在 Google Play 商店中发布,哪些 R8 规则是必要的?
是否可以将 Google Play Games Services Realtime Multiplayer 集成到适用于 Android 和 iOS 的 LibGDX 中?