pyk*_*yko 6 android libgdx google-play-services google-play-games
目前正试图将我的游戏(使用libgdx)连接到Google Game Services以启用排行榜/成就等,并看到一些奇怪的行为.
问题
当我第一次点击"登录"时,它会显示选择你的谷歌帐户的对话框,然后播放服务权限圈子对话框,然后是大加载圈子.过了一会儿,它会显示一个对话框,其中包含以下错误Google Play服务的未知问题
如果我点击"确定"关闭该错误对话框,然后再次点击"登录"按钮,我立即成功登录.之后,我可以看到排行榜等.
细节
我看到的错误日志:
...
D: GameHelper: onActivityResult: req=RC_RESOLVE, resp=9001
D: GameHelper: onAR: responseCode=9001, so giving up.
D: GameHelper: killConnections: killing connections.
D: GameHelper: killConnections: all clients disconnected.
D: GameHelper: State change CONNECTING -> DISCONNECTED
D: GameHelper: Making error dialog for failure: SignInFailureReason(serviceErrorCode:SIGN_IN_REQUIRED(4),activityResultCode:9001)
D: GameHelper: Showing error dialog.
D: GameHelper: Notifying LISTENER of sign-in FAILURE (error)
I: ----- Sign in failed :( -----
///// Tap the 'sign in' button again ///////
I: ----- Begin sign in process... -----
D: GameHelper: Starting USER-INITIATED sign-in flow.
D: GameHelper: isGooglePlayServicesAvailable returned 0
D: GameHelper: beginUserInitiatedSignIn: starting new sign-in flow.
D: GameHelper: Starting connections.
D: GameHelper: State change DISCONNECTED -> CONNECTING
D: GameHelper: connectNextClient: requested clients: 1, connected clients: 0
D: GameHelper: Pending clients: 1
D: GameHelper: Connecting GamesClient.
D: GameHelper: onConnected: connected! client=1
D: GameHelper: Connected clients updated to: 1
D: GameHelper: connectNextClient: requested clients: 1, connected clients: 1
D: GameHelper: Pending clients: 0
D: GameHelper: All clients now connected. Sign-in successful!
D: GameHelper: All requested clients connected. Sign-in succeeded!
D: GameHelper: State change CONNECTING -> CONNECTED
D: GameHelper: Notifying LISTENER of sign-in SUCCESS
I: ----- Sign in success! -----
D: GameHelper: onActivityResult: req=3, resp=3
D: GameHelper: onActivityResult: request code not meant for us. Ignoring.
...
Run Code Online (Sandbox Code Playgroud)
因为我正在使用libgdx,所以我没有扩展BaseGameActivity,我正在GameHelper手动创建并使用它
// in @Override onCreate:
mGameHelper = new GameHelper(this);
mGameHelper.setup(this, GameHelper.CLIENT_GAMES);
mGamesClient = mGameHelper.getGamesClient();
// in @Override onStart:
mGameHelper.onStart(this);
// then, for the sign in button, using it:
mGameHelper.beginUserInitiatedSignIn();
Run Code Online (Sandbox Code Playgroud)
额外信息
我也在日志中看到以下内容:
E: The Google Play services resources were not found. Check your project configuration to ensure that the resources are included.
Run Code Online (Sandbox Code Playgroud)
但是,不确定它是否相关,从我读过的内容来看,这似乎与map/gps/location有关.不使用地图,我能够登录,所以不确定这个错误是否相关(虽然听起来很糟糕!)
更新/编辑:测试后,此错误是由AdMob(我已与Google服务集成)引起的.虽然错误听起来不好,但是禁用AdMob(没有更多错误),奇怪的行为仍然是相同的.
我认为以下是有趣的错误日志,虽然没有太多的运气谷歌搜索此错误:
E/dalvikvm( 2618): Could not find class 'android.app.AppOpsManager', referenced from method axo.a
Run Code Online (Sandbox Code Playgroud)
编辑2:更多的发现!
即使我没有完成整个登录工作流程,我也会得到相同的错误对话框.
任何帮助都会很棒!
注意:
onActivityResult按照Google Play游戏服务中的建议拨打电话:奇怪的登录行为弄清楚了!结果却犯了一个愚蠢的错误!
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// mGameHelper.onActivityResult(requestCode, requestCode, data); // before - broken
mGameHelper.onActivityResult(requestCode, resultCode, data); // after - working! \o/
}
Run Code Online (Sandbox Code Playgroud)
看到不同?(提示:第二个参数mGameHelper.onActivityResult)
为了其他人将来遇到此问题的好处,以下日志虽然可能指示其他错误,但似乎不会影响登录过程 - 或一般的游戏服务 - 我的排行榜正在运行:)
E/GooglePlayServicesUtil(10033):找不到 Google Play 服务资源。检查您的项目配置以确保包含资源。
根据我的调试,这与使用 AdMob 和 Google Play 服务有关。AdMob 可能正在尝试获取基于位置的信息(上述错误的所有其他 Google 搜索都会导致与地图相关的问题)
E/dalvikvm(10100): 找不到类“android.app.AppOpsManager”,从方法 axp.a 引用
不确定此错误是什么。android.app.AppOpsManager似乎是 API v19 中添加的一个类(Android Developer 中的 AppOpsManager)。我将 SDK 更改为使用 API v19,但仍然出现此错误。快速浏览一下文档表明它还具有与位置相关的功能(可能又是 AdMob - 别以为我在禁用 AdMob 时看到了这个)
| 归档时间: |
|
| 查看次数: |
9209 次 |
| 最近记录: |