目前正在尝试将我的游戏(使用 libgdx)连接到 Google 游戏服务以启用排行榜/成就等并看到一些奇怪的行为。
问题
当我第一次点击“登录”时,它会显示选择您的谷歌帐户的对话框,然后播放服务权限对话框,然后是大加载圆圈。一段时间后,它会显示一个对话框,其中包含以下错误 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.
...
因为我使用的是 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();
额外信息
我还在日志中看到以下内容:
E: The Google Play services resources were not found. Check your project configuration to ensure that the resources are included.
但是,不确定它是否相关,据我所读,这似乎与 map/gps/location 有关。不使用 map 但我能够登录,所以不确定这个错误是否相关(尽管听起来确实很糟糕!)
更新/编辑:经测试,此错误是由 AdMob(我已将其与 google 服务集成)引起的。尽管错误听起来很糟糕,但禁用 AdMob(不再出现错误)奇怪的行为仍然相同。
我认为下面是有趣的错误日志,尽管谷歌搜索此错误时运气不佳:
E/dalvikvm( 2618): Could not find class 'android.app.AppOpsManager', referenced from method axo.a
编辑 2:更多发现!
即使我没有完成整个登录工作流程,我也会收到相同的错误对话框。
任何帮助都会很棒!
注意:
onActivityResult 最佳答案
想通了!这最终变成了一个愚蠢的错误!
@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/
}
看出区别了吗? (提示:mGameHelper.onActivityResult 的第二个参数)
为了其他人将来遇到此问题,以下日志虽然可能指示其他错误,但似乎不会影响登录过程 - 或一般的游戏服务 - 我的排行榜正在运行:)
E/GooglePlayServicesUtil(10033):找不到 Google Play 服务资源。检查您的项目配置以确保包含资源。
根据我的调试,这与使用 AdMob 和 Google Play 服务有关。 AdMob 很可能正在尝试获取基于位置的信息(针对上述错误的所有其他 Google 搜索都会导致与 map 相关的问题)
E/dalvikvm(10100): 找不到从方法 axp.a 引用的类“android.app.AppOpsManager”
不确定这个错误是什么。 android.app.AppOpsManager 似乎是 API v19 (AppOpsManager in Android Developer) 中添加的一个类。我将我的 SDK 更改为使用 API v19,但仍然出现此错误。快速浏览文档表明它还具有与位置相关的功能(可能又是 AdMob - 不要认为我在禁用 AdMob 时看到了这个)
关于android - Google 游戏服务登录问题(第一次尝试失败,第二次成功),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20148526/
我正在尝试使用ruby和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我
我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..
我正在用Ruby编写一个简单的程序来检查域列表是否被占用。基本上它循环遍历列表,并使用以下函数进行检查。require'rubygems'require'whois'defcheck_domain(domain)c=Whois::Client.newc.query("google.com").available?end程序不断出错(即使我在google.com中进行硬编码),并打印以下消息。鉴于该程序非常简单,我已经没有什么想法了-有什么建议吗?/Library/Ruby/Gems/1.8/gems/whois-2.0.2/lib/whois/server/adapters/base.
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/
最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru
在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo
我已经构建了一些serverspec代码来在多个主机上运行一组测试。问题是当任何测试失败时,测试会在当前主机停止。即使测试失败,我也希望它继续在所有主机上运行。Rakefile:namespace:specdotask:all=>hosts.map{|h|'spec:'+h.split('.')[0]}hosts.eachdo|host|begindesc"Runserverspecto#{host}"RSpec::Core::RakeTask.new(host)do|t|ENV['TARGET_HOST']=hostt.pattern="spec/cfengine3/*_spec.r
我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie
我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b