初试cocos2d-x,编译运行cocos2d-x范例的过程和遇到的问题。

前言:今天好歹手痒痒想开始动手学习编写游戏,编写游戏必定少不了游戏框架,于是乎我盯上了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版本的,这个步骤应该不用我多说。

初试cocos2d-x,编译运行cocos2d-x范例的过程和遇到的问题。_第1张图片

在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

一张截图说明怎样改环境变量:

初试cocos2d-x,编译运行cocos2d-x范例的过程和遇到的问题。_第2张图片

看到了,至少需要三个环境变量:


    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中导入这个目录的项目。

注意:导入过程中的不要复制文件夹到工作目录!

初试cocos2d-x,编译运行cocos2d-x范例的过程和遇到的问题。_第3张图片

如下图:

初试cocos2d-x,编译运行cocos2d-x范例的过程和遇到的问题。_第4张图片

这个过程一般不会发生错误,但是要求你最好提前下载好至少android 2.2以上的sdk包,否则会报错。

此时我们可以继续导入主项目

主项目是SimpleGame目录下的项目。这个目录存在于E:\cocos2d-x\samples\Cpp\SimpleGame下

导入后Eclipse会自动替我们执行项目目录下的build_native.sh文件了。但是,记住,这时候会有一个

问题,这时候编译的so文件一定是不完整的。因为一定有目录没有完整得导入进来。此时你打开jni目

录下的main.c文件,一定会有头文件 can't resolved。

初试cocos2d-x,编译运行cocos2d-x范例的过程和遇到的问题。_第5张图片

因为这个项目中使用了两个存在于E:\cocos2d-x\samples\Cpp\SimpleGame\Classes目录下的几个头文件

初试cocos2d-x,编译运行cocos2d-x范例的过程和遇到的问题。_第6张图片

我们一定要在项目关联的变量中引入这个目录。

如下图:

初试cocos2d-x,编译运行cocos2d-x范例的过程和遇到的问题。_第7张图片


Apply以后,Eclipse会提示是否要rebuild一下,我们一定要同意它进行rebuild。

rebuild结束后,我们就可以在项目上右键Run as Android application了。


...................................................


等等,事情好像没完。

报错了!

报错信息如下:

初试cocos2d-x,编译运行cocos2d-x范例的过程和遇到的问题。_第8张图片

[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命令。如下:

初试cocos2d-x,编译运行cocos2d-x范例的过程和遇到的问题。_第9张图片

命令完成后,再次Run as……,不再报错,问题一劳永逸的解决了。

打包完成后手机上运行起来这个小小的游戏范例,好有成就感啊!

初试cocos2d-x,编译运行cocos2d-x范例的过程和遇到的问题。_第10张图片






你可能感兴趣的:(android)