Android 应用程序因 BaseGameActivity 崩溃

2023-12-23

所以,有点难问。 我想使用 google play 游戏服务访问我的游戏的排行榜。 我尝试使用 BaseGameActivity,如下所示访问游戏 API https://developers.google.com/games/services/android/init

尝试了一些事情,做了一些搜索,但无法找出问题所在。当 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!

Answer:我必须在清单中输入有关 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" />

本教程中仅提到了其中一项。


我刚刚完成了排行榜的制作,这很痛苦,但我做到了并且有效。以下是一长串可能会直接或间接帮助您的建议。我使用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 构建路径”,然后单击“库”选项卡。您应该会看到列出的支持 jar。如果没有,您可以添加该 jar,无论它位于项目中的哪个位置。如果您不这样做,您可能会遇到称为 JAR MIXMATCH 的东西。当然,您会在控制台中看到确切的问题,因此很容易修复和诊断。

  • 您的清单应该是:

最后一行 @integer 会查看 google_play_services_version,因此以后只要 google play 版本发生更改,您就不必执行任何操作。不要对版本号值进行硬编码,否则您将必须经常手动更新它。

  • MyProject 扩展了 BaseGameActivity。

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

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

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

  • 最后,如果您使用的应用程序具有与 Google Play 商店中的密钥库不同的 SHA1(安全哈希算法),那么将会出现错误,并且您将无法连接。因此,如果您上传的应用程序带有带有 SHA1(如 ab:cd:de...)的密钥库,并且您正在调试应用程序,则可能会遇到问题,因为 Eclipse 将使用具有不同 SHA1 的默认 Android 调试密钥库。 您将无法连接,因此您将无法使用任何 Google Play 服务。

  • 我建议您查看名为“Trivial Quest”的示例代码。https://github.com/playgameservices/android-samples https://github.com/playgameservices/android-samples它位于 eclipse_compat 下。此示例代码展示了如何登录和解锁成就。如果您可以登录,您就可以非常轻松地获得成就和排行榜。

  • 有很多东西,但你只给了我们拼图的一小部分。如果您还有其他问题,请告诉我们。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 应用程序因 BaseGameActivity 崩溃 的相关文章

随机推荐