史上最清晰快捷的mac下新建cocos2dx跨ios安卓项目教程

来源:互联网 发布:给自己打电话知乎 编辑:程序博客网 时间:2024/06/06 18:54
上篇讲了搭建环境,现在谈谈新建项目

大家可以按quick-cocos2dx这篇官方文章在自己中意的目录<PathMyProject>下新建工程——当然,你会发现之后还有少许一些事情要做。

1. 首先是普遍碰到的org.cocos2dx.lib.Cocos2dxActivity的问题。网上有文章提到的一些方法,其相关的文件可能由于各软件版本更迭已经找不到了。我所处环境的解决方法是打开<PathMyProject>/proj.android/build_native.sh, 在如下所示位置插入一句话,然后在终端里重新build_native一下就没问题了

##找到如下几行echo "- copy scripts"cp -rf "$APP_ROOT"/scripts "$APP_ANDROID_ROOT"/assets/echo "- copy resources"cp -rf "$APP_ROOT"/res "$APP_ANDROID_ROOT"/assets/##在此添加以下两句echo "- copy platform classes"cp -rf "$COCOS2DX_ROOT"/cocos2dx/platform/android/java/src/org "$APP_ROOT"/proj.android/src

不服不行,q-c2dx在项目快速建立方面确实很赞。你会发现你的项目目录被划分成如下样子:

ios及android项目及配置都分别在proj.ios和proj.android下面。res里放着你的资源,scripts放着lua脚本,sources放着c++源代码,分的相当清楚。妈妈再也不用担心我被安卓搞疯了!!!


2. 之后你可以在sources下添加自己的c++代码了,朋友们的建议是c++的include里必须包含源文件在sources下的完整路径,否则android编译会出问题。但是许多第三方库如果也要逐文件添加include的完整路径不是一件合理的事情,经研究发现可以用如下方法解决,:
用文本编辑器打开<PathMyProject>/proj.android/jni/Android.mk文件,找到LOCAL_C_INCLUDES := ...的位置,在后面添加字段。比如你c++源码里一共有FolderA到FolderC三个文件夹,都位于<PathMyProject>/sources根目录下。则需要写成:
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../sources\$(LOCAL_PATH)/../../sources/FolderA\$(LOCAL_PATH)/../../sources/FolderB\$(LOCAL_PATH)/../../sources/FolderC\

要注意,这里列出的路径是不递归的,也就是说如果FolderA下还有两个目录FolderA1和FolderA2,你必须把这两个目录也列上,变成:
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../sources\$(LOCAL_PATH)/../../sources/FolderA\$(LOCAL_PATH)/../../sources/FolderA/FolderA1\$(LOCAL_PATH)/../../sources/FolderA/FolderA2\$(LOCAL_PATH)/../../sources/FolderB\$(LOCAL_PATH)/../../sources/FolderC\
所以这种方法只能部分解决问题,主要适用于比较扁平的代码文件夹结构,或是不方便编辑的第三方代码。如果你本地项目目录复杂,那GeekMouse对你只有一个建议:就是把本地项目C++代码还是统一放到一个目录下,只不过在XCode工程里把路径划分更仔细些。这样在使用XCode编辑C++代码时逻辑很清晰,同时又可以避免build android工程时很多不必要的工作量。

最后,res下的资源文件一般都随项目情况包含许多子目录,在编译时你有两个选择,要么使用各种脚本把这些资源展平到一个文件夹里供android项目使用(我死党有那个脚本代码,本帖顶贴多了我就偷偷发上来),要么在c++里引用资源时就写全资源的路径。说实话都不爽,谁叫android项目没xcode那么智能。

本人还在继续学习中,此篇文章将持续更新