cocos2dx开发配置

来源:互联网 发布:带着淘宝穿古代txt书包 编辑:程序博客网 时间:2024/05/21 09:15

之前虽然将cocos2dx的hello world编译出来,但cocos2dx与平常的java开发不同。因为cocos2dx是跨平台的,所以同样可以在linux,mac及windows运行。然而android studio开发语言是java,而cocos2dx是c++写成的编码。网上鱼龙混杂,皆不能讲到开发的实质。没办法,最新的技术永远在国外,在Google上我发现了一个youtube上的视频(请先翻墙) https://www.youtube.com/watch?v=gdOkbXYsf04。

老实说,这个外国人取了巧。视频的最后不过是修改了一下字体的大小,然后重新编译。如果是大的项目呢?成千上万个文件,通过两个android-studio可以智能化更新么?答案是否定的,相对而言,unity开发将一切封装的好好的,但难碰得真正的核心。掌握核心技术,这是一个健康有为游戏应该做到的。cocos2dx就是这样的一个东西,这几天业余有时间,我试了很多次。虽然目前仍然没有找到顺手的IDE工具,但核心已然明白了。

首先开发cocos2dx,应该先了解3.x与2.x的区别,cocos2d与cocos2dx的区别。一个大版本跨越后,很多以前的资料deprecated过时了。然而其本质是跨平台和c++,了解了这些开发便不再困难。cocos2dx现在的版本真正的代码在Classes文件夹,是c++语言编写。然后通过ndk编译android.mk和application.mk来生成.so,如果想增删cpp文件,必须手动修改android.mk的源文件。如果是linux平台很容易修改实现自动,然而windows平台无法实现自动。关于mk文件编译及c++知识这里不多说,我写了一个python脚本,脚本内容如下

import os.pathimport sysimport os text = """LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)$(call import-add-path,$(LOCAL_PATH)/../../../cocos2d)$(call import-add-path,$(LOCAL_PATH)/../../../cocos2d/external)$(call import-add-path,$(LOCAL_PATH)/../../../cocos2d/cocos)$(call import-add-path,$(LOCAL_PATH)/../../../cocos2d/cocos/audio/include)LOCAL_MODULE := cocos2dxLOCAL_MODULE_FILENAME := libcocos2dxLOCAL_SRC_FILES := main.cpp"""g = os.walk( os.path.abspath(os.path.join(os.path.dirname(__file__),"../../../Classes")) )  dirs = ""for parent,dirnames,filenames in g:for dirname in  dirnames:d = os.path.join(parent,dirname)d = d[ d.find("Classes"):]d = d.replace("\\","/")dirs += " \\\n                    $(LOCAL_PATH)/../../../Classes"+dfor filename in filenames:  if(filename.endswith(".h")):continuep = os.path.join(parent,filename)p = p[ p.find('Classes'):]p = p.replace('\\','/')text += ' \\\n                   ../../../'+p#text = text[: len(text)-2]text += """LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../Classes"""text += dirstext += """# _COCOS_HEADER_ANDROID_BEGIN# _COCOS_HEADER_ANDROID_ENDLOCAL_STATIC_LIBRARIES := cocos2dx_static# _COCOS_LIB_ANDROID_BEGIN# _COCOS_LIB_ANDROID_ENDinclude $(BUILD_SHARED_LIBRARY)$(call import-module,.)"""f = open('Android.mk', 'w')f.write(text)f.close()

注意我将hellocpp文件夹删了,然后把main.cpp拷到jni同一目录下。在jni目录新建一个_generate_mk.py文件,内容拷进去,点击即可自动生成android.mk。通常我又建了一个bat批处理文件,一键生成android.mk,编译运行,同样在jni目录下。内容如下
_generate_mk.pycocos run -p android --android-studio --pt-23  & pause

这样我可以专注于Classes文件夹文件的编写了,而不必打开android studio了,同时所有引用到的资源放在proj.android-studio\assets。

最后不得不吐槽下,网上的东西真的是太老了。基本上无法运行,若想学cocos2dx还应该打开cocos2dx\tests\cpp-tests\拷过去编译完美运行。

PS: 虽然android-studio有支持cocos2dx直接编译运行的插件,但我仍建议使用vs2012以上版本或codeblocks做为开发IDE。本人使用codeBlocks配置菜单->工具为上面的bat文件,设置输出到工具输出窗口,并配置快捷键为F1。上面的脚本需改动一下如下:

D:cd D:\mywork\test\proj.android-studio\app\jni_generate_mk.pycocos run -p android --android-studio --pt-23
然后在编译器选项中添加cocos库头文件,写完代码后按下F1直接在手机中查看效果。这个方法比较无奈,借助NDK编译,不能调试,仅适用懒折腾的人。此方法在此备注,仅供参考。

0 0