搭建2dx的android开发环境官网有教程(http://www.cocos2d-x.org/projects/cocos2d-x/wiki/Chapter_1_-_How_to_Create_a_New_cocos2d-x_project_on_multi-platforms),2dx的中文网站也有对应的翻译(http://cocos2d.cocoachina.com/resource/show?nid=60),在此不作赘述。
DDMS调试
这里要记录的问题是,如何在virtualbox的linux系统里面用eclipse的DDMS做2dx的android项目调试。至于为什么要在linux中做eclipse调试,这是我个人的历史遗留问题:C++我习惯在windows下用VS开发,而windows下的linux模拟环境cygwin又是我很讨厌的(印象中09年的时候装过一次,巨麻烦),所以我在windows下用VS编码和调试,通过后把代码copy到linux机器的android项目中编译出apk文件。
今天新买的adroid测试机终于到了,从两年前的htc hero(android 2.1)升级到华为android 4.1,感觉太爽了,迫不及待的装上前几周用业余时间写的两个小游戏:
一个跟微信打飞机比较类似,上面掉怪物,下面打,代码自己写的,资源图片是东拼西凑来的,运行正常(apk见http://download.csdn.net/detail/xiarendeniao/6029239);
另一个是拿一个大神的代码(详见http://4137613.blog.51cto.com/4127613/761397)当教材学习并小改了一下得到的,他之前的代码在android下有些小瑕疵(左右移动有些不受控制,这个是因为手指刚触摸到屏幕时会有小距离的touchmove事件;移动节奏不太好,记得是滑动一次移一步),改掉这些的时候运行正常(apk见...);
后来我用python写了个server,并在大神的代码中用pthread开了个线程、用libcurl建立tcp长连接意图实现网络对战,这时windows下正常,android下出现了闪退情况,今天搭建DDMS调试环境也就是为了解决这个问题。
整体环境:win7宿主,virtualbox虚拟机,centos6虚拟系统
问题一.virtualbox虚拟机无法添加和识别usb设备(我的华为手机,android 4.1系统,具体错误见下图):USB device '...' with UUID {...} is busy with a previous request. Please try again later.
参照virtualbox的官方论坛尝试了很多方法,也不清楚到底是哪个办法凑效的,个人感觉是这样的(宿主机器启动时我进入到BIOS的设置页面把USB的一个选项也disable了,不过感觉应该没什么用):
在宿主机器(Win7)的设备管理器中把手机卸载掉;
在virtualbox对应的虚拟系统的设置页面“启动USB控制器”(不“启用USB2.0(EHCI)控制器”),添加一个远程是“任何(any)”的过滤器;
启动虚拟系统后在“分配USB设备”中把对应的设备打钩,宿主机器右下角会冒泡提示“virualbox usb正在安装”和“安装完成”,然后,lsusb就可以看到设备了
问题二.ADT启动后使用DDMS检测到的设备信息是“???”
用sudo adb devices(我linux环境中的adb在/data/android/adt-bundle-linux-x86_64-20130717/sdk/platform-tools这里)可以看到权限有问题
用sudo adb kill-server 停止adb服务
接着 sudo adb start-server 重启adb服务
然后 sudo adb devices 显示出的设备名就是正常的
做上述操作的同时,我还做了驱动的处理,不清楚是两者一起起了作用还是只要其中一项就够了,懒得纠结了
驱动处理如下(参考 http://blog.csdn.net/zhenwenxian/article/details/5901350):
增加了一项配置文件,如下所示
sudo chmod a+rx /etc/udev/rules.d/50-android.rules重启虚拟系统(上述参考页面里说要重启/etc/init.d/udev,然后重启adb服务就行了,可是我虚拟机没有找到/etc/init.d/udev)
eclipse连真机调试(模拟器界面全黑搞不定)
昨天(2013.11.14)琢磨出eclipse连真机调试的方法了,不用每次编译出apk,copy到真机,安装,然后用DDMS看运行信息了;
直接在eclipse下(ADT)右击项目“Debug As”-->"Android Application",然后项目会在真机上运行,eclipse的logCat会打印运行信息
参考:http://developer.android.com/tools/building/building-eclipse.html#RunningOnDeviceEclipse(Running on a device)
1.保证lsusb可以看到真机(上面有方法)