前言:今天好歹手痒痒想开始动手学习编写游戏,编写游戏必定少不了游戏框架,于是乎我盯上了cocos2d-x,再于是乎我就下载了cocos2d-x。
我下载的是最新版的cocos2d-x-2.2.1版。这个版本跟以前地 版本不一样,主目录下已经不再提供创建android工程目录的sh文件和bat文件
,照着以前运行批处理的方法已经不再好用了。
本文目的:旨在导入一个cocos2d-x中的sample项目并运行起来,这个项目是cocos2d-x的sdk包中的/cocos2d-x/samples/Cpp下的SimpleGame项目。
我先给一下下载链接:http://www.cocos2d-x.org/download
大家可以到這里去下载cocos-2d-x的2.2.1版。
注意:本文仅限于介绍如何导入一个现有的cocos2d-x的自带范例,并仅限于2.2.1版的包。因为我发现以前的2.1.4版和现在的版本目录结构有些不一样,导致我学习伊始走了很多弯路。请读者以cocos-2dx官网提供的方法为准。cocos2d-x也可能会时常变更项目搭建的方法,请各位读者多多参考官网说明。
现在我来记录一下我导入cocos2d-x的一些经历。
1、NDK环境的搭建;
首先,下载NDK的zip包。我当前下载的是r9c版本的,这个步骤应该不用我多说。
在Eclipse中填写好ndk的主目录。这样Eclipse中的NDK环境就算告一段落。但其实这样还不够,NDK中尽管包含了一个最小的cygwin编译集合,但是依然不包含bash
等一系列工具,所以,我们必须还要下载Cygwin并安装。需要安装哪些?只要记住下载Devel下的工具即可。当然,多多益善,你有的是时间我不介意你把整个cygwin全部下载下来。
2、环境变量。
这一步很重要,我是参考官网上的文章做的。
http://www.cocos2d-x.org/wiki/How_to_build_and_run_HelloWorld_on_Android_NDK_r5_and_above
http://www.cocos2d-x.org/wiki/How_to_run_HelloWorld_on_ndk_r4_and_r5
一张截图说明怎样改环境变量:
看到了,至少需要三个环境变量:
COCOS2DX_ROOT = E:\cocos2d-x
NDK_ROOT = K:\android-ndk-r9c
Path中添加一个K:\Cygwin\bin\
事先说明:我的cocos2d-x解压在E盘根目录,ndk和Cygwin解压在K:虚拟盘目录上,这里要根据你的需要填写。
注意了,为什么要添加这三个环境变量呢?COCOS2DX_ROOT这个变量是让Eclipse找到cocos2d-x的根目录的
NDK_ROOT是为了让Cygwin找到android-NDK的根目录,Path中的cygin/bin是为了让Eclipse和cocos2d-x找到bash 目录的。
之前我所找到的文章都是说明要设置什么什么环境变量,却没有说为什么设置这些环境变量。
现在Eclipse,cocos2d-x,Ndk,都已经准备妥当了,现在开始动手导入一个cocos2d-x的范例了。
3、开始导入。
首先我们要导入一个库项目,这个库项目存在于E:\cocos2d-x\cocos2dx\platform\android\java下,所以我们要在Eclipse中导入这个目录的项目。
注意:导入过程中的不要复制文件夹到工作目录!
如下图:
这个过程一般不会发生错误,但是要求你最好提前下载好至少android 2.2以上的sdk包,否则会报错。
此时我们可以继续导入主项目
主项目是SimpleGame目录下的项目。这个目录存在于E:\cocos2d-x\samples\Cpp\SimpleGame下
导入后Eclipse会自动替我们执行项目目录下的build_native.sh文件了。但是,记住,这时候会有一个
问题,这时候编译的so文件一定是不完整的。因为一定有目录没有完整得导入进来。此时你打开jni目
录下的main.c文件,一定会有头文件 can't resolved。
因为这个项目中使用了两个存在于E:\cocos2d-x\samples\Cpp\SimpleGame\Classes目录下的几个头文件
我们一定要在项目关联的变量中引入这个目录。
如下图:
Apply以后,Eclipse会提示是否要rebuild一下,我们一定要同意它进行rebuild。
rebuild结束后,我们就可以在项目上右键Run as Android application了。
...................................................
等等,事情好像没完。
报错了!
报错信息如下:
[2013-12-28 18:35:46 - SimpleGame] (skipping file '.gitignore' due to ANDROID_AAPT_IGNORE pattern '.*')
[2013-12-28 18:35:46 - SimpleGame] Unable to add 'E:\cocos2d-x\samples\Cpp\SimpleGame\proj.android\assets\app.config.txt': Zip add failed
[2013-12-28 18:35:46 - SimpleGame] ERROR: unable to process assets while packaging 'E:\cocos2d-x\samples\Cpp\SimpleGame\proj.android\bin\resources.ap_'
[2013-12-28 18:35:46 - SimpleGame] ERROR: packaging of 'E:\cocos2d-x\samples\Cpp\SimpleGame\proj.android\bin\resources.ap_' failed
这个可要命了,这是怎么回事?asset文件无法add?
终于在百度上Google 到了答案,这是由于没有文件访问权限导致的。
于是,我在Cygwin上,改变到cocos2d-x的根目录上,执行了chmod命令。如下:
命令完成后,再次Run as……,不再报错,问题一劳永逸的解决了。
打包完成后手机上运行起来这个小小的游戏范例,好有成就感啊!