cocos2d-x因为其良好的跨平台解决方案而受到开发者的追捧。我们公司以前开发ios使用的是cocos2d-iphone,考虑到未来向android的移植,决定尝试使用cocos2d-x。
cocos2d-x官方给出的解决方案是使用vs开发,但是看了一下,好像很麻烦啊……当需要移植到android的时候还要用类似cygwin这样的工具来模拟unix系统,然后修改配置文件还得要会改.sh的unix批处理文件,而且最终,还是要使用eclipse来运行和调试android版本。
对于做java出身,只熟悉Eclipse不熟悉VS,只熟悉msdos不熟悉unix,只会写bat不会写sh的我来说这是灾难啊……
对于只有AMD2.3G的cpu,2G内存还要分一些出去当显存,同时打开vs2008和Eclipse3.7就会像随时都会爆炸的电脑来说这也是灾难啊……
有没有理法可以直接用一个eclipse就全搞定呢?
反正至今为止我还没google出来,也许因为最近召开党的斯巴达所以某些结果无法显示?
但其实是有理法的。
虽然不算完美解决,但总算看到一线曙光,如果有读者看了以后觉得有用,就帮忙扩散一下吧,有兴趣的可以加我的微博@yanjie_sheng 一起讨论。
/****************************我是分割线*******************************/
一、环境
我只是尝试了Android平台,但因为保持了官方跨平台解决方案的文件夹结构,所以理论上各平台都应该是没问题的。
1.1Eclipse+CDT
首先确保你的Eclipse正确安装了CDT插件,这样你才能编辑和创建C++工程,有关Eclipse+CDT的环境配置,请自行google。
版本……不知道有没有影响,我的Eclipse是3.7 Indigo,CDT是8.0.2。
1.2Cocos2d-x
这个……必须的。
http://cn.cocos2d-x.org官网下载,建议cocos2d-2.0-x-2.0.3,这样稍后的例子你的会跟本文介绍的一样。
1.3Android SDK / ADT
既然想用eclipse,应该是想做Android平台吧,那么请正确安装Android SDK和ADT。
只要开发Android项目,无论是否使用cocos2d-x引擎这都是必需的。也请自行google。
1.4Android NDK
这是Android的C++交叉编译器,如果要做Android版本也是必须的。官网下载,r8或以上版本。
1.5Microsoft Visual Studio 2008或更高版本 (可选项)
这个只是因为如果你想生成win32版本的话就必须要vc++的编译器,如果不需要win32版本只要Android就不用装了。
(什么?你问我既然可以直接开发Android版本为什么还要win32版?这个我也不知道,也许是为做个pc上的demo给投资方演示?)
二、解决方案概述
这一章的目的是让你了解cocos2d-x跨平台的基本思路和项目结构,如果你已经有所了解或者急于创建Eclipse下的工程,你可以跳过这一章。
2.1 目录结构
下载并解压cocos2dx,你可以在\cocos2d-2.0-x-2.0.3\samples目录下看到一些例子:
<IGNORE_JS_OP>
以HelloCpp为例,这个文件夹下包含下面这些文件夹:
<IGNORE_JS_OP>
其中:
\HelloCpp\Classes 是
\HelloCpp\Resources
\HelloCpp\proj.XXXXX 是各平台版本对应的工程文件夹,可以供相应的开发环境直接使用。
也就是说,我们将代码放在Classes文件夹下,资源放在Resources文件夹下,然后使用Eclipse/Xcode等开发环境在对应版本的工程中通过调用它们来运行和调试。
2.2 基于vs的解决方案
在vs中通过打开cocos2d-2.0-x-2.0.3\cocos2d-win32.vc20XX.sln创建的工程直接就包含了下面的结构:
<IGNORE_JS_OP>
仍以HelloCpp为例,你可以直接在\HelloCpp\Classes文件夹下编写C++代码并通过win32版本运行调试:
<IGNORE_JS_OP>
2.3 基于Eclipse的解决方案
上一小节简单提到的内容可以在官网http://cocos2d.cocoachina.com/resource 中的教程第一章中找到更详细的说明,这是因为vs是官方推荐的windows下的开发环境。如果你使用vs,那么有关跨平台的一切几乎都由cocos2d-x帮你解决好了:自动生成项目、自动包含lib。
下文将要介绍的基于Eclipse的解决方案并没有那么方便,很多时候都需要手动来进行处理。我很希望cocos2d-x开发组能够考虑一下是否将Eclipse纳入标准环境从而在将来将其改善得更为自动化一些,这也是发表本文的主要目的之一。
|
|
四、如何使用
如果你顺利的进行了第三章所述的所有操作,你的跨平台环境已经完成了。但如果你仍然不知道该如何编写cocos2d-x代码并在Android设备上运行和调试,请继续向下看。
4.1 编写C++代码
经过上一章的操作之后,你的Eclipse里应该有了3个新的工程:
HelloCpp: 这是一个C++工程
libcocos2dx(我的叫做java): 这是一个cocos2dx的Android版本lib工程
org.cocos2dx.hellocpp.HelloCpp: 这是一个Android工程
<IGNORE_JS_OP>
遵照cocos2d-x的跨平台解决方案,我们应该在HelloCpp工程的Classes下编写C++程序,HelloCpp工程自带了两个类:AppDelegate和HelloWorldScene。你可以增加更多你自己的类。
4.2 运行Android项目
如果你已经在HelloCpp工程中编写了一些C++程序而急于想在Android设备上看到效果的话,你不应该编译和运行HelloCpp工程,而应该直接运行org.cocos2dx.hellocpp.HelloCpp工程。
但在运行之前,仍然需要我们手动的将HelloCpp 工程下的\HelloCpp\Resources目录下的所有资源文件都考到org.cocos2dx.hellocpp.HelloCpp工程的assets文件夹下。(或许将来有谁帮忙写个windows下的批处理来做这件事?)
在本例中,就是iphone和iphonehd文件夹:
<IGNORE_JS_OP>
然后选中org.cocos2dx.hellocpp.HelloCpp工程,点Eclipse的Project-> Build Project:
<IGNORE_JS_OP>
第一次build的时候会很慢,因为要把整个cocos2d-x的lib都编译一遍,以后就不会这么慢了。编译完成的话在Console窗口应该能看到下面的输出:
<IGNORE_JS_OP>
这个时候libhellocpp.so已经生成了,接下来就可以在你的Android设备上运行你的org.cocos2dx.hellocpp.HelloCpp工程了!
(特别注意的一点是:好像模拟器对于openGLES的支持有问题,如果用模拟器运行这个例子的话会报错)
4.3win32版本(可选项)
你也许还记得1.5小节中的可选项:安装vs2008。如果你进行了这一步,那么你还可以使用vc++的编译器在win32环境下编译和运行你的HelloCpp工程。
据说cocos2dx自带的模拟器也挺不错,不过因为我没有做这一步,所以我也不知道实际效果是什么,而且你也不要指望我会在本文中给你攻略。
五、后记
5.1 为什么要用Eclipse
也许有人会问,既然已经有了vs的一整套解决方案,并且自动化程度非常高,为什么还要使用包含这么多手动操作的Eclipse环境呢?
呃……我想原因主要是如下3点吧:
1、 不用在两个很占资源的IDE之间切来切去就可以直接看到android上的效果。
2、 如果你的android版本需要增加一些第3方的广告或者付费插件(一般都是jar的lib包),你用vs的win32版本是无能为力的。
3、 对于那些和我一样不熟悉unix和vs的人来说,不用学习unix和.sh文件写法,不用熟悉一个新的IDE
5.2 为什么要把C++工程和Android工程分开
1、保持cocos2dx官方解决方案的文件夹结构,你只需要在C++工程里编辑proj.android外面那个Classes里的代码,不用去修改目录结构。
2、如果直接在android工程里编辑C++代码,好像自动完成什么的会出不来。
相较于vs的工程,相当于是把vs里面那个win32工程直接搬到Eclipse里面了,只是不装vs的话不能运行win32版本而已。