cocos2d -jsb & -html5 问题记录 (2013/10/23新加入 安卓环境设置for2.2版)

2楼2013/10/23日加入安卓开发环境设置

最近做的项目正在用cocos2d -jsb,为方便调试所以用了 -html5。打算在这里把所遇到的问题记录下来,方便大家交流~

2013/09/24
问题1 -html5-2.1.6 XMLHttpRequest例子报错
那么先说说今天刚遇到的一个问题吧。今天想看下如何发送http消息,于是下了-html5的最新版本 2.1.6,发现XMLHttpRequest的例子报错,而JSB版本的就没错。研究了下XMLHttpRequest,资料:http://www.w3school.com.cn/ajax/ajax_xmlhttprequest_send.asp
原来send post 请求前要加一句:xmlhttp.setRequestHeader(“Content-type”,“application/x-www-form-urlencoded”);
这里讲的也不错,http://www.ibm.com/developerworks/cn/web/wa-ajaxintro/ 我看了前三部分,感觉有点啰嗦,哈哈。

2013/09/25
问题2 数据库使用
我的程序里有大量的数据需要存取,cocos2d自带的key,value键值对无法满足需求,所以打算使用sqlite。-jsb里可以通过c++来实现,但-html5里就只能用js了,这样就得维护两套代码。要是谁用一套代码可以搞定这个问题,还请赐教。
-html5里访问数据库我摸索到两套方法:
一、使用WebSql,但有两个问题:1、这个项目已经停止维护。2、只支持异步调用。标准里貌似有同步调用,但浏览器似乎都不支持,这样的话我还得改我程序的结构,很不爽。
二、通过php使用mysql。正好我手上有一套php代码,于是我使用问题1里提到的XMLHttpRequest,发送消息给php然后调用mysql,OK搞定。

2013/10/02

更新
garfield_ho 在
8楼和9楼记录的问题。大家如果也有一些问题或者解决方法可以跟帖提出,我会汇总在1楼方便大家查阅。
问题3(9月28日)WebSocket一次过只能接收不超过4K的数据
解决办法在下面的地址里
https://github.com/cocos2d/cocos2d-x/commit/eeeca832bcd03a194f100d79eaa53f7e1a986212

问题4(9月29日)假如调用了AnimationManager.getSequences方法,就会程序崩溃,所以无法获取到动画的持续时间。
有一个折中的解决办法在下面的地址
https://github.com/cocos2d/cocos2d-x/commit/881b0df2d382fb2622d583c0aaf5b9dc87dcb9cf

这层记录CocosBuilder使用过程中的问题

2013/10/23
这两天在纠结mac下安卓环境配置的问题,问题记录下来方便以后的初学者参考。使用Windows开发的朋友也先别关,下面提到的资源也许会解决你的一些问题。

1、创建一个跨平台项目:
这里有介绍 http://www.cocos2d-x.org/wiki/How_to_create_a_multi-platform_project_in_one_command_line

2、在Eclipse里编译运行我们的程序:
上篇文章里只提到了在命令行里编译运行程序,我们可能还会用到Eclipse。建好的项目在 cocos2d-x/projects/目录下。在项目的proj.android目录里,有一个 README.md文件,里面讲了两种build安卓工程的方法,一个是在Eclipse里,一个是在命令行里。
上面两个文章都是官方写的,但是英文的,不细心找的话很难发现。以后碰到问题的话可以先到官方wiki里查找:http://www.cocos2d-x.org/wiki 。然后再看看有没有ReadMe。

3、
Eclipse里中文乱码
我的工程一开始是在XCode里开发的,导入Eclipse里以后会出现中文乱码问题:右键工程 – Properties – Resource 里 Other 选为 UTF-8。

4、修改Android.mk文件
我们自己添加的cpp文件 和 头文件目录 得在 Android.mk 里添加进去,如果文件经常改动的话每次都得改,很麻烦。这里提供了一种解决方法:
http://blog.ready4go.com/blog/2013/10/12/update-android-dot-mk-with-local-src-files-and-local-c-includes/
感谢原作者

配置自己的源文件目录和源文件后缀名

MY_FILES_PATH := (LOCAL_PATH) \ (LOCAL_PATH)/…/…/Classes

MY_FILES_SUFFIX := .cpp .c

递归遍历目录下的所有的文件

rwildcard=$(wildcard $1$2) (foreach d,(wildcard 1*),(call rwildcard,$d/,$2))

获取相应的源文件

MY_ALL_FILES := (foreach src_path,(MY_FILES_PATH), (call rwildcard,(src_path),.) )
MY_ALL_FILES := (MY_ALL_FILES:(MY_CPP_PATH)/./=$(MY_CPP_PATH))
MY_SRC_LIST := (filter (MY_FILES_SUFFIX),(MY_ALL_FILES)) MY_SRC_LIST := (MY_SRC_LIST:$(LOCAL_PATH)/=)

去除字串的重复单词

define uniq =
(eval seen :=) (foreach ,1,(if (filter ,{seen}),,(eval seen += _))) {seen}
endef

递归遍历获取所有目录

MY_ALL_DIRS := (dir (foreach src_path,(MY_FILES_PATH), (call rwildcard,(src_path),*/) ) ) MY_ALL_DIRS := (call uniq,$(MY_ALL_DIRS))

赋值给NDK编译系统

LOCAL_SRC_FILES := (MY_SRC_LIST) LOCAL_C_INCLUDES := (MY_ALL_DIRS)

5、关闭Eclipse代码分析
Eclipse的C++代码分析弱爆了,会报一些莫名其妙的错误,比如std::string could not be resolved, va_list could not be resolved等等,导致我们本来正确的代码无法运行,很蛋疼,所以我们赶紧把它关掉。
右键工程 – Properties – C/C++ General – Code Analysis 选择 “use project se tting” 去掉所有选项。
(为啥我一写se tting 网站就说“输入内容存在危险字符,安全起见,已被本站拦截” 晕死,害我只能中间加一空格)

上面两个设置也可以在ADT – Preferences …里面改,似乎可以让所有工程都生效,不过我还没试过。。。哦哈哈。

6、无法读取APK里的Sqlite数据库
得先将APK里的数据库复制到 CCFileUtils::sharedFileUtils()->getWritablePath() 或者 SD卡:mnt/sdcard 里才能读取。
详情见这里:http://blog.csdn.net/xujiayin/article/details/9221851

7、横、竖屏,读写SD卡
http://blog.csdn.net/angryxxq/article/details/8700420
一、横屏、竖屏设置
AndroidManifest.xml文件中,
screenOrientation=“landscape” 为横屏, screenOrientation="portrait"为竖屏

二、读写sd卡
AndroidManifest.xml文件中,先增加权限:

8、使用eclipse调试C++ 代码
http://blog.ready4go.com/blog/2013/05/17/how-to-debug-native-c-plus-plus-code-with-eclipse/ 也是第4点提到的作者,不过我没有试,不嫌麻烦的同学可以试一下。

9、安卓模拟器运行缓慢的解决方法:cocos2d-x/tools/android-emulator-README.md
这个我设置了后,程序一运行就报错。。。大家谨慎!
运行成功!模拟器启动时间是原来1/2,操作也十分流畅!

再占一个哦哈哈 再占一个哦哈哈

— Begin quote from ____

引用第1楼icepower于2013-09-25 15:33发表的 CocosBuilder使用问题记录 :
这层记录CocosBuilder使用过程中的问题 http://www.cocoachina.com/bbs/job.php?action=topost&tid=158867&pid=834486

— End quote

放弃2楼吧,不要考虑CocosBuilder了。CocosBuilder作者从Zynga离职,不再维护了,你没见CocosBuilder仓库已经1个月没更新了么。
及时更换为CocoStudio吧

哦 漏!!!不能够!这个项目已经用了呀,而且我不想用Windows。。。下个项目再说吧

刚才去Cocosbuilder论坛上看了下,原来该作者又搞了个叫SpriteBuilder的东西,但似乎只支持 -iPhone。

— Begin quote from ____

引用第4楼walzer于2013-09-25 23:04发表的 Re:CocosBuilder使用问题记录 :

放弃2楼吧,不要考虑CocosBuilder了。CocosBuilder作者从Zynga离职,不再维护了,你没见CocosBuilder仓库已经1个月没更新了么。
http://www.cocoachina.com/bbs/job.php?action=topost&tid=158867&pid=834634

— End quote

但是CocosStuido还不支持JSB

我也是在用JSB和H5开发,我也更新一下问题吧

问题3(9月28日)WebSocket一次过只能接收不超过4K的数据

解决办法在下面的地址里

https://github.com/cocos2d/cocos2d-x/commit/eeeca832bcd03a194f100d79eaa53f7e1a986212

问题4(9月29日)假如调用了AnimationManager.getSequences方法,就会程序崩溃,所以无法获取到动画的持续时间。

有一个折中的解决办法在下面的地址

https://github.com/cocos2d/cocos2d-x/commit/881b0df2d382fb2622d583c0aaf5b9dc87dcb9cf

等我熟练使用cocos2d-iphone的时候,苹果出了spritekit

等我熟练使用cocosbuilder的时候,cocosbuilder歇菜了。

这他妈什么节奏啊?

哈哈,它们之间有很多相似的地方的,转换起来应该不会很难。活到老学到老嘛~

顶一个,新加入安卓环境设置。:14:

请问在vs 2012怎么搭建html5开发平台

这个。。。你一定要用vs吗?开发html5用 WebStorm 比较好

那个神奇的运行缓慢解决方法貌似还真的行

不过那个android.mk的那个要怎么修改啊,直接把作者内容复制添加上去,还是说需要覆盖掉啊?

直接覆盖就行

收藏:2::2:

好贴,顶一个

收藏。谢谢