【问题标题】:Android App crash with BaseGameActivityAndroid 应用程序因 BaseGameActivity 崩溃
【发布时间】:2014-04-13 22:26:01
【问题描述】:

所以,有点难问。 我想使用 google play 游戏服务来访问我的游戏的排行榜。 我尝试使用 BaseGameActivity 就像这里显示的那样Accessing the Games APIs

尝试了一些东西,进行了一些搜索,但无法找出问题所在。 BaseGameActivity 启动时我的应用程序崩溃。 日志错误显示:

03-10 17:44:54.071: E/AndroidRuntime(31435): FATAL EXCEPTION: main
03-10 17:44:54.071: E/AndroidRuntime(31435): java.lang.IllegalStateException: A
 fatal  developer error has occurred. Check the logs for further information.
03-10 17:44:54.071: E/AndroidRuntime(31435):    at     com.google.android.gms.internal.dw$h.b(Unknown Source)
03-10 17:44:54.071: E/AndroidRuntime(31435):    at com.google.android.gms.internal.dw$h.b(Unknown Source)
03-10 17:44:54.071: E/AndroidRuntime(31435):    at com.google.android.gms.internal.dw$b.bR(Unknown Source)
03-10 17:44:54.071: E/AndroidRuntime(31435):    at com.google.android.gms.internal.dw$a.handleMessage(Unknown Source)

控制台显示:

[2014-03-10 17:47:18 - BaseGameUtils] 找不到 BaseGameUtils.apk!

答案: 我必须对清单中的 appid 做两个元数据条目。 没有过滤器的日志列出了相应的错误

这两个条目是

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

教程中只提到了这些条目中的一个。

【问题讨论】:

  • 您是否将项目作为库导入了?并且应该在您的项目构建属性中取消选中 isLibrary 部分
  • 进口,检查。 isLibrary 已勾选,如教程中所述。将尝试取消勾选
  • 有同样的问题,有消息吗?谢谢
  • 从“答案”问题更新中猜测 - 您发现元数据是问题所在?
  • 谢谢!我遇到了同样的问题,这让我发疯了。

标签: android crash android-activity google-play-games


【解决方案1】:

我刚刚完成了排行榜,这很痛苦,但我做到了,而且效果很好。这是一长串可能直接或间接帮助您的建议。我使用 Eclipse。

  • 对于 Google Play API,最小 SDK 为 9,因此请将其放在您的清单中的自己的行中:

    //任何你想要的目标

  • 将 BaseGameUtils 项目导入您的工作区。您不必修改任何此代码。

  • 导入 google-play-services_lib。这是在您的 sdk 文件夹中。我的 sdk 文件夹在我的 eclipse 文件夹旁边。无论如何,这是在:sdk/extras/google/google_play_services/libproject/google-play-services_lib。您不必修改任何此代码。

  • 在包资源管理器选项卡中右键单击 YourProject(通常在包含所有项目文件夹的 eclipse 左侧)。然后单击属性(Alt+Enter)。然后点击安卓。在Android页面的底部,应该是“Library”。单击添加按钮并添加 BaseGameUtils 和 google-play-services_lib。不要点击“是图书馆”。

  • 确保所有相关项目中的所有 android-support-v4.jar 文件都使用相同的最新版本。您可以通过右键单击“包资源管理器”选项卡中的项目并转到 ->Android 工具->添加支持库来更新支持文件。然后你接受并更新。 您可以通过右键单击您的项目并转到属性来进一步检查列出的所有项目是否具有此更新的 jar。然后单击 Java Build Path,然后单击库选项卡。您应该会看到列出的支持 jar。如果没有,您可以添加 jar,无论它位于项目中的什么位置。如果你不这样做,你可能会有一个叫做 JAR MIXMATCH 的东西。当然,您会在控制台中看到确切的问题,因此很容易修复和诊断。

  • 您的清单应该是:

@integer 的最后一行查看 google_play_services_version,因此您以后无需在 google play 版本更改时执行任何操作。不要对版本号值进行硬编码,否则您将不得不经常手动更新它。

  • MyProject 扩展了 BaseGameActivity。

  • 然后调用排行榜并更新它,他们的 2 行代码示例代码运行良好。见下文。 https://developers.google.com/games/services/android/leaderboards 当您将应用程序链接到 google play 开发者控制台时,您必须传递给您的排行榜 ID。这是一个类似于“DkbGvageyBASEWEFCx”的字符串。 如果您未连接,更新和获取排行榜将会崩溃。查看下面的完整示例代码。

    //更新 if (getApiClient().isConnected()) //getAPIClient 是 BaseGameUtils 的一部分 Games.Leaderboards.submitScore(getApiClient(), leaderboardID, score);

    //显示 if (getApiClient().isConnected()) startActivityForResult(Games.Leaderboards.getLeaderboardIntent(getApiClient(), leaderboardID), 1337);

  • 1234563能够连接。因此,如果您上传了一个带有 SHA1(如 ab:cd:de...)的密钥库的应用程序,并且您正在调试您的应用程序,您可能会看到问题,因为 Eclipse 将使用具有不同 SHA1 的默认 android 调试密钥库。 您将无法连接,因此您将无法使用任何 google play 服务。
  • 我建议您查看名为“Trivial Quest”的示例代码。 https://github.com/playgameservices/android-samples 它在 eclipse_compat 下。此示例代码展示了如何登录和解锁成就。如果您可以登录,您就可以非常轻松地完成成就和排行榜。

  • 有很多东西,但你只给了我们一小块拼图。如果您还有任何问题,请告诉我们。

【讨论】:

  • 感谢您的指导。正如你在上面看到的,我自己想出了一个解决方案。因此,这对我一点帮助都没有,但可能对其他一些在实施 google play 高分板时遇到问题的编码人员有帮助。
【解决方案2】:

我认为,也许,您需要将 Google Play Services Library 放入您的依赖项中,

在这一行:

03-10 17:44:54.071:E/AndroidRuntime(31435):在 com.google.android.gms.internal.dw$h.b(未知来源)

可能你对谷歌的地图依赖有问题,使用了谷歌的库 GMS

到 Google Play 服务中的地图和其他服务,如果您遇到问题,可能是您在项目中添加了错误的版本。

最适合您的方式是下载 Google Play Services For Games 并放入您的项目中

依赖关系。

https://developers.google.com/games/services/downloads/ (这个 google play 服务是专门针对游戏的)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 1970-01-01
    相关资源
    最近更新 更多