android

All posts tagged android

 

这周弄海外版的Google登录没少折腾,期间踩了不少的坑,记录一下,避免后来者少走些弯路。

环境:我们用的Cocos2dx2.2.6版本,这个版本不支持Android Studio,因此我们用的是Eclipse环境。而官方文档,网上资料也都是基于Android Studio环境的。这个也是造成坑比较多的重要原因:文档资料匮乏。

主要的几个坑和重要步骤:

(1)  用Eclipse的Android SDK Manager安装一个最新的Google Play services.

(2) 下载后在extras/google/m2repository/com/google/android/gms/目录下有一系列各模块各版本的包,aar的包可以直接命名成zip文件解压缩。

(3) 合适的版本是最重要的一步,最新的是10.2.0版本,6.5.87版本及之前是作为一个包整体存在的,而最新的SignIn相关的API是在8.3.0版本开始的,顺便吐槽下Google,API的变动也实在太大了,而且基本上很难找到旧版本的相关API使用说明或者对应的Sample。我反复试了5个版本(包括10.2.0和6.5.87),最终发现8.3.0比较合适(2015年11月发布,相关的变更历史参考https://developers.google.com/android/guides/releases)。

(4)  登录相关的API涉及到play-services-basement和play-services-auth两个包,将解压后的两个文件夹导入成两个工程并作为库。

(5)  在主工程中使用上面两个库。

(6)  Cocos2dx唯一的改动是Cocos2dxActivity继承自FragmentActivity, 这需要导入android-support-v4包或android-support-v7包。

(7)  然后参考官方的API和网上相关文档即可。

(8)  注意相关的配置。

(9)  过程中出现各种各样的编译错误也是很正常的,没关系,一个个的消灭,直到弹出Google的登录界面基本上意味着快要大功告成了。

(10)  实际登录成功需要到处签名的Release APK,没有签名的Debug会导致登录失败。

(11) 出于安全需要一个Token,requestIdToken的参数应该是一个web application类型的clientId, 而不是一个android类型的,这个非常让人混淆。

 

在安卓上,有时候会有玩家报多次连击问题。一次单击,误认为是点击了两次或多次,非常影响体验。

经查明,这是cocos2dx 的多点触摸BUG导致,将Cocos2dxGLSurfaceView.java的onTouchEvent函数中ACTION_POINTER_DOWN,ACTION_POINTER_UP屏蔽掉就好了(我们该项目用的是2.2.6版本)。

最近我们同事在移植android时,发现了一个奇怪的问题:

步骤一. 首先连接服务器A

步骤二.成功之后断开链接去连接服务器B。

问题出在步骤二上,连接上服务器B后,再也收不到任何消息。模拟器上某些情况下是可以收到消息的,某些情况下就一定是收不到消息的(这些情况也很有规律);而真机上是一定不会收到消息的。各种工具都表明客户端确实已经连接上了服务器B,服务器B也确实向客户端成功发送了数据。

后来把poll函数的超时时间设成零(之前是-1),发现就OK了。

至今仍然对应不上为什么。Mark一下。