Android libgdx:使用 Google Play 服务时出错
Android libgdx: error while using Google Play Services
我正在使用 Libgdx 为 Android 开发游戏。
几周前,我开始为游戏实施 Google Play 服务中的一些服务。
我关注了this guide
并且我能够成功实施该服务。
昨天我打开了 SDK,我决定上传 Google Play 服务包(因为 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 ComponentInfo{com.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 class 未正确编译,因为我的项目的某些值在 R 中不再可见。
感谢您的帮助。
卢卡
**更新问题**
我正在使用 eclipse
我解决了这个问题。
问题是:因为我没有使用 Android Studio 进行开发,所以存在很多与依赖项管理相关的问题。
我按照本指南 this guide 来实施游戏服务。
现在指南说您必须将 BaseGameUtils 和 google-play-services-lib 作为 "library projects" 导入,然后将对 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 库的最糟糕的方式,但是...自从我开始这个项目时 Android 仍然支持 ecplise...
谢谢你,
卢卡
我正在使用 Libgdx 为 Android 开发游戏。 几周前,我开始为游戏实施 Google Play 服务中的一些服务。 我关注了this guide
并且我能够成功实施该服务。
昨天我打开了 SDK,我决定上传 Google Play 服务包(因为 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 ComponentInfo{com.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 class 未正确编译,因为我的项目的某些值在 R 中不再可见。
感谢您的帮助。
卢卡
**更新问题**
我正在使用 eclipse
我解决了这个问题。 问题是:因为我没有使用 Android Studio 进行开发,所以存在很多与依赖项管理相关的问题。 我按照本指南 this guide 来实施游戏服务。 现在指南说您必须将 BaseGameUtils 和 google-play-services-lib 作为 "library projects" 导入,然后将对 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 库的最糟糕的方式,但是...自从我开始这个项目时 Android 仍然支持 ecplise...
谢谢你,
卢卡