cocos2d-x 菜鸟学习笔记一(跨平台编译)

本文档详述了cocos2d-x新手如何进行跨平台编译,涵盖Mac+XCode和Win7+VS2010+eclipse+Cygwin+NDK的环境配置。通过实例介绍了在XCode上创建iOS工程,然后利用cocos2d-x工具生成Android项目的过程,并解决了编译过程中遇到的问题,如设置NDK_ROOT等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

移动应用编程我学得比较晚,这些天看了不少cocos2d-x的教程,趁着编译的空闲记录下学习过程和其中碰到的问题。

个人认为学习任何游戏框架和引擎都必需掌握的基础知识之一就是“跨平台编译”,这样就可以同时发布多个平台的应用,有利于推广。所以两天都没打代码,直接找教程学习cocos2d-x的跨平台编译方法及过程(网络上的资料包括编译时可能碰到的问题,大多很零散,所以这里整合一下)。

我自己的搭建的环境是VMWare9.0虚拟机+Mac+XCode,Win7+VS2010+eclipse+Cgywin+NDK,其中VS2010整合后可以正常使用cocos2d-x的核心功能,因为 编译生成各个库的时候没有碰到什么问题,只是生成project-Js时报了几个错误,不过我更喜欢用虚拟机运行Mac+XCode进行代码编写,感叹现在C++编程的效率被这些工具提升得很高啊……就连我这样的超级菜鸟都能感觉到……

虚拟机上安装Mac和XCode就不多说了,自己百度就能找到,唯一的一点就是vmware8.0只支持Mac10.7的安装,而9.0可以支持Mac10.8

cgywin+NDK的安装和配置稍微麻烦点,不过百度也可以查到很多教程,不过NDK的版本众多,有些版本并不能保证在自己电脑上运行和很正常,这时就可以换个版本,下面是google官方的NDK下载页面:

http://developer.android.com/tools/sdk/ndk/index.html#Installing

cocos2d-x用的是2.1.2,感觉Bug比先前用过的libgdx多很多啊,版本更新日程上排的密密麻麻的,不过这功能是比较全面,平台跨着方便,所以说是写2D游戏最佳的游戏框架也不为过了。安装过程同样就不重复叙述了,无论是在Mac上还是win上都有详细的安装教程,下面记录的就是ios和android跨平台编译的详细步骤:

首先,是在XCode上编写ios的工程,完成后在windows上用cocos2d-x的跨平台编译辅助工具新建一个android项目,到cocos2d-x的根目录下可以找到这个create-android-project.bat文件,首先要用记事本打开编辑三个参数:set _ANDROIDTOOLS=D:\android\android-sdk-windows\tools(android sdk tools的路径),set _CYGBIN(cgywin的bin路径)以及set _NDKROOT=D:\android-ndk-r8e(NDK的路径),也许你设置后打开时会看到什么“不是内部命令”之类的东西,其它的我不知道,我只知道我碰上的是文件有问题(虽然我下载下来从来没动过),但我还是用标准的书写格式重新替换了文件,然后就能工作正常了,改动后的文件内容如下:

@echo off
:: This script is used to create an android project.
:: You should modify _ANDROIDTOOLS _CYGBIN _NDKROOT to work under your environment.
:: Don't change it until you know what you do.


setlocal


:: Check if it was run under cocos2d-x root
if not exist "%cd%\create-android-project.bat" echo Error!!! You should run it under cocos2dx root & pause & exit 2


if not exist "%~dpn0.sh" echo Script "%~dpn0.sh" not found & pause & exit 3


:: modify it to work under your environment  
set _CYGBIN=e:\cygwin\bin
if not exist "%_CYGBIN%" echo Couldn't find Cygwin at "%_CYGBIN%" & pause & exit 4


:: modify it to work under your environment
set _ANDROIDTOOLS=e:\android\android-sdk\tools
if not exist "%_ANDROIDTOOLS%" echo Couldn't find android sdk tools at "%_ANDROIDTOOLS%" & pause & exit 5


:: modify it to work under your environment
set _NDKROOT=e:\android\android-ndk-r8
if not exist "%_NDKROOT%" echo Couldn't find ndk at "%_NDKROOT%" & pause & exit 6


:: create android project
set /P _PACKAGEPATH=Please enter your package path. For example: org.cocos2dx.example:
set /P _PROJECTNAME=Please enter your project name:
if exist "%CD%\%_PROJECTNAME%" echo "%_PROJECTNAME%" exists, please use another name & pause & exit 7
echo "Now cocos2d-x suppurts Android 2.1-update1, 2.2, 2.3 & 3.0"
echo "Other versions have not tested."
call "%_ANDROIDTOOLS%\android.bat" list targets
set /P _TARGETID=Please input target id:
set _PROJECTDIR=%CD%\%_PROJECTNAME%


echo Create android project
mkdir %_PROJECTDIR%
echo Create Android project inside proj.android
call "%_ANDROIDTOOLS%\android.bat" create project -n %_PROJECTNAME% -t %_TARGETID% -k %_PACKAGEPATH% -a %_PROJECTNAME% -p %_PROJECTDIR%\proj.android
call "%_ANDROIDTOOLS%\android.bat" update project -l ../../cocos2dx/platform/android/java -p %_PROJECTDIR%\proj.android
:: Resolve ___.sh to /cygdrive based *nix path and store in %_CYGSCRIPT%
for /f "delims=" %%A in ('%_CYGBIN%\cygpath.exe "%~dpn0.sh"') do set _CYGSCRIPT=%%A


:: Resolve current dir to cygwin path
for /f "delims=" %%A in ('%_CYGBIN%\cygpath.exe "%cd%"') do set _CURRENTDIR=%%A


:: Resolve ndk dir to cygwin path
for /f "delims=" %%A in ('%_CYGBIN%\cygpath.exe "%_NDKROOT%"') do set _NDKROOT=%%A
 
:: Throw away temporary env vars and invoke script, passing any args that were passed to us
endlocal & %_CYGBIN%\bash --login "%_CYGSCRIPT%" %_CURRENTDIR% %_PROJECTNAME% %_NDKROOT% %_PACKAGEPATH% "windows"


pause

正常运行后输入包名:com.xx.xx和工程名:xx,然后会列出安装的android SDK版本,选择支持的platform版本即可。我在这一步遇到的问题就是:cocos2d-x是放在中文目录下,在编译的最后一步会出错,这时将不会生成待会要用到的build_native.sh,也就无法进行从ios跨到android的编译……这一点在与VS2010整合时也应该注意……

在编译前,可以先解决一个问题,这是会在编译项目后会碰到的:具体请参考http://blog.163.com/zhoulong19880518@126/blog/static/6070970220132511558143/

经过上面一步后,会在cocos2d-x的根目录下生成对应项目名的目录,里面将包含三个文件夹,其中class和resouce就是用来存放C++文件和资源文件的,你可以在XCode编写的ios工程项目中找到这些文件,把它们copy到已经生成android工程项目的对应的目录中(也可以在Mac中打包上传到百度网盘,再在win下下载),然后打开cgywin的控制台,进入到已经生成工程项目的名为proj.android的目录下,再输入./build_native.sh,则编译开始……然后是个漫长的编译过程……

完成后将工程导入eclipse中,运行即可看到效果,不过一些人不能在模拟器上正常运行工程,看到如:No configs match configSpec,exceptionininitializererror这样的提示错误,所以还是进入真机测试吧。如果在编译时提示please define NDK_ROOT的话那就表示Cgywin中的NDK的设置不对,我这里碰到的问题是Cgywin中已经设置了NDK_ROOT,包括系统环境变量也设置了,但运行时依然出这个提示,后来发现设置系统环境变量名时用的是NDK,而不是NDK_ROOT,重新编辑下,再重启Cgywin控制台则可正常编译……VS20xx下的编译同样类似,只不过是直接把class和Resource里的文件Copy到对应的目录下就能直接用了。


Cocos2D-X是全球知名的开源跨平台游戏引擎,易学易用,目前已经支持 iOS、Android、Windows 桌面、Mac OS X、Linux、BlackBerry、Windows Phone 等平台。Cocos2d-JS统了使用JS进行开发的开发体验,将HTML5引擎与JSB的API高度统起来。捕鱼达人HTML 5版本基于此引擎实现对浏览器的支持,并获得谷歌Web Store首页置顶推荐。引擎配套有活跃的社区支持,已有来自Google、Zynga、Microsoft、Intel、Samsung、BlackBerry等跨国公司的优秀工程师为引擎贡献代码,开源社区24小时轮转所有的缺陷都被迅速发现并修复。 Cocos2D-X已被海内外顶尖的游戏公司,如Zynga、Glu、Gree、DeNA、TinyCo、Gamevil、HandyGames、人人游戏、4399、搜狐畅游、昆仑万维、热酷、乐元素、菲音、心动游戏等用于其主流 iOS/Android游戏开发。 目前移动平台最火爆收入最高的几款游戏,如月收入超过千万的捕鱼达人2、龙之力量、忘仙OL、神仙道等均是基于Cocos2d-x开发。多款下载量千万次以上的知名手机游戏。如捕鱼达人、口袋商业街、小小村庄、云和绵羊、三国群殴传等,同样是基于Cocos2d-x开发。已经有2000多款基于Cocos2d-x开发的发布在全球各大应用商城,累计下载量超过5亿次。 众多知名端游、页游公司选择Cocos2d-x引擎开发移动游戏。如盛大游戏、昆仑万维 、畅游、完美世界、4399、广州菲音、金山西山居等。神仙道、星晨变、卧龙吟、东风破等游戏已经基于Cocos2d-x成功移植至手机平台,并取得非常优异的成绩。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值