读书人

Hello, cocos2dx World

发布时间: 2012-12-25 16:18:28 作者: rapoo

Hello, cocos2dx World!

第一天学习android用cocos2dx引擎,记录下学习过程,并转载下来遇到困难时查询的文章,感谢原作者们!

让我们开始吧。你可以从下面的目录直接跳到你所用的平台。

第一章 —— 如何在多种平台上创建新的cocos2d-x项目
1 从win32开始
1.2在VisualStudio上安装Wizard
1.3 创建一个新的cocos2d-win32 项目
1.4 编译并运行
1.5 运气差的人可以参考这里
2 从沃Phone开始
3 从iPhone开始
4 从Android开始
4.1 Windows下
4.1.1 创建项目
4.1.2 编译原生代码
4.1.3 把项目移入eclipse
4.1.4 编译java代码并运行
4.2 Linux下


1.从win32 开始

Cocos2d-win32 接口已在WinXp+VistualStudio2008/2010下测试正常。但在vista/win7下,我无法保证它运行良好。如果你根据教程,还是无法正常运行cocos2d-win32接口,这里有篇参考。

1.2在VisualStudio上安装Wizard

在你下载并解压完源码包之后,找到cocos2d-x 文件夹,点击“build-win32.bat”来编译整个项目,之后点击“install-templates-msvc.bat”来安装wizard。bat脚本会自动对应vs2008或者2010。更多细节,请参考这篇文档Coscos2d-x Application Wizard for Visual Studio 用户指导

1.3 创建一个新的cocos2d-win32 项目

现在你可以通过VS2008打开cocos2d-x/cocos2d-win32.vs2008.sln,我们可以从这看到库文件。

右键点击“Solution ’cocos2d-win32.vc2008’”,之后选择“Add->New Project”,

选择“cocos2d-x -> cocos2d-win32 Application”,在Name一栏写上“Cocos2dxSimpleGame”,并使用默认的路径设置。
备注:在win32&沃Phone接口,游戏的路径必须放下cocos2d-x的根目录下。

点击“OK->Next”,不勾选 Box2D,因为Cocos2dSimpleGame不使用物理系统。请确保“SimpleAudioEngine in CocosDenshion”是勾选的,之后点“Finished”。

1.4 编译并运行

现在我们可以看到“Cocos2dSimpleGame.win32”已经创建好了,我们的游戏现在依赖于libcocos2d & libCocosDenshion这两个库。

好,编译并运行,通常情况下,如果你不是运气那么差的话,你会看到下面这张图。

1.5 运气差的人可以参考这里

或许有些人不能成功地在win32上运行这个HelloWorld模板,这是因为cocos2d-win32接口基于PowerVR OpenGL ES 1.1 SDK for PC Emulation(Windows vista/XP 版)
http://www.imgtec.com/PowerVR/insider/sdkdownloads/index.asp#GLES1b
我们把PowerVR的库集成到了路径
cocos2d-x-root/cocos2dx/platform/win32/third_party/libraries里
因此:
 对于win7用户:PowerVR还没有发布Windows 7的接口。但你依然可以试一试。许多论坛里的win7 用户成功运行过这个例子。
 对于winxp/vista 用户:如果HelloWorld因为任何glXXX或者eglXXX函数而崩溃,请更新你的显卡驱动,去NVIDIA/ATI/INTEL的网站找到最新的驱动。
 对于运气差的用户:你可以动手在Xcode里创建cocos2d-x 项目,或者去教堂/庙里拜拜找点运气:P

2.从沃Phone开始

如果你是一位沃Phone开发者,以上的win32步骤同样适用于你。仅有3处不同:
1. 你必须把cocos2d-x-root设置到D:/Work7目录里,沃Phone有严格的app 路径要求。
2. 请用VS2008打开D:/Work7/cocos2d-x/cocos2d-wophone.sln,而不是cocos2d-win32
3. 请在“Add New Project”对话框里选择“cocos2d-wophone application”,如下所示

而cocos2d-wophone的 HelloWorld编译运行后的结果如下

3.从iPhone开始

我们从0.8.2版开始就有了对应Xcode的模板。你可以像创建cocos2d-iphone项目那样简单地来创建cocos2d-x项目。首先,找到cocos2d-x的根目录,之后在mac的shell下运行install-templates.sh

./install-templates-xcode.sh -u -f

你可以在这里选择你的Xcode版本,xcode3或是xcode4。
安装完成之后,你就可以打开Xcode,之后点击“Creat a new Xcode project”。你会看到这个对话框

选择“cocos2d-x application”,之后点“choose”,输入项目的名称。Xcode将会帮你创建好cocos2d-x的项目。

请注意,iOS的cocos2d-x项目可以在任何你想要的地方被创建。Xcode里的wizard会复制所有cocos2dx、CocosDenshion等库到项目的文件夹里。这和VisualStudio上win32&沃Phone的wizard不同。

好了,之后编译运行,你会看到如下的HelloWorld效果图

4.从Android开始

Ndk中Android的项目有两部分,一个对应的是java,另一个对应c++。我们将会运行creat-android-project.bat(或者在linux下运行create-android-project.sh)来创建Android ndk项目。

4.1 Windows下
4.1.1创建项目
“create-android-project.bat”在cocos2d-x的根目录里。你应该根据你的环境做一些改动。

为了适应我的配置环境,我在create-android-project.bat里改动一些设置。
 set_CYGBIN=C:\cygwin\bin
Cygwin bin的路径
 set_ANDROIDTOOLS=D:\android\android-sdk-windows\tools
android sdk tools的路径
 set_NDKROOT=D:\android\android-ndk-r5b
ndk的根目录

现在你就可以运行“create-android-project.bat”来创建一个android项目:
进入cocos2d-x的根目录,双击create-android-project.bat,输入项目的名称以及target id,如下所示

在版本0.8.2之后,你可能会被要求键入package的路径,路径的格式为:org.cocos2dx.Cocos2dxSimpleGame。
target id 根据不同的环境有不同的区别,你应当确保输入有效的target id。目前cocos2dx支持2.1-update1和Android2.2,其他版本还未测试过。

4.1.2编译原生代码

现在你可以在cocos2d-x的根目录下看到一个命名为“Cocos2dxSimpleGame”的文件夹,运行你的cygwin,之后进去“Cocos2dxSimpleGame/android”,之后运行“build_native.sh”。

4.1.3把项目移入到eclipse

运行你的eclipse,点击 File->New->Project->Android Project,之后像下面这样移入项目

4.1.4编译java代码并运行

右击项目并选“Build Project”,之后右击项目并选“Run As”->“Android Application”。之后你就会看到如下结果:

转载请注明出处:http://blog.csdn.net/maojudong/article/details/7261986

2012-10-21更新:

时代在进步,苹果发布了IOS6和iphone5,不知道苹果过些天的iPad mini 怎么样,cocos2dx也更新到2.0.3 ,社区也在不断的进步,由于这一段时间来工作特别忙,cocos2dx的日志有就没有更新了,今天到社区下载了最新的2dx版本进行了简单的测试,还好基本都通过


XP32位系统 + JDK1.6 +

NDKR8b + 2dx (0.11/0.12/.13/2.0/2.0.1/2.0.2/2.0.3) 测试通过

NDKR8 + 2dx (0.11/0.12/.13/2.0/2.0.1/2.0.2/2.0.3) 测试通过


全部编译通过,没有出现网友说的问题

说下注意点:
1. java编译器使用1.6.x (不建议用1.5.x/1.7.x)

2. 有些安装了cygwin的,请暂时从PATH中屏蔽掉关于cygwin的内容

3. jni目录中要有Application.mk文件,且其中一定要有APP_PLATFORM :=android-5 (2dx 的 2.0.x系列至少为android-5, 1.x至少为android-4)Eclipse编译则不需要这一步,不过建议还是写上好些


4. 2dx的0.10版本,ndk_build.cmd 不能完成编译,需要安装cygwin才能编译(或者linux/macos 编译),更早期的版本就没有测试了,相信做项目也很少有人用0.10以前的版本了


5. Eclipse编译环境中 2.0.3/2.0.2 /2.0.1 需要先导入\cocos2dx\platform\android\java项目,然后用Eclipse编译出一个 jar文件,最后将这个jar文件导入到 tests 项目中的libs就可完成编译(应一个网友的要求才这么说的,感谢他,是我的表述不清楚)


2.0.2 /2.0.1 中\cocos2dx\platform\android\java导入后,源代码不是src目录,却是src_common 目录,所以可以修改.classpath 文件,或是更改src_common到src是最简单的方法


6. 不要用模拟器进行调试,模拟器的速度慢,导致加载时间长,最后黑屏,时间长了,就导致ANR(应用程序无响应),建议买个android 平板或是手机吧(现在很便宜,299元钱的android平板到处都有卖(我的公司就有卖),1000元钱可以买到双核甚至4核的手机了)

如果非要用模拟器进行调试,请将AVD模拟器中添加 GPU emulation 属性,并将值设置为yes就可以了

经过2个小时的测试发现 只有4.0.3 和4.1.2 两个版本的模拟器显示正常,且模拟器需要开启GPU emulation 功能。

我的测试平台:

2dx 2.0.3 版本+ MAC 10.8.2 + jdk1.6 + eclipse3.7.2


模拟器开启GPU功能

2.2 模拟器很卡,且异常退出,无法操作 结论:不通过,不能用于调试2dx

2.3.1 模拟器很卡,且异常退出,无法操作 结论:不通过,不能用于调试2dx

2.3.3 模拟器很卡,且异常退出,无法操作 结论:不通过,不能用于调试2dx

3.X 未测试

4.0 模拟器不能开启,,且异常退出,无法操作 结论:不通过,不能用于调试2dx

4.0.3 2dx可以运行,可以调试

4.1.2 2dx运行正常,可以调试


模拟器未开启GPU功能

2.2 黑屏 结论:不通过,不能用于调试2dx

2.3.1 异常退出 结论:不通过,不能用于调试2dx

2.3.3 异常退出 结论:不通过,不能用于调试2dx

3.X 未测试

4.0 异常退出 结论:不通过,不能用于调试2dx

4.0.3 异常退出 结论:不通过,不能用于调试2dx

4.1.2 异常退出 结论:不通过,不能用于调试2dx


2dx中的论坛也有讨论这个

http://cocos2d-x.org/boards/6/topics/12563

这位兄弟的文章也不错

http://www.raywenderlich.com/12065/how-to-create-a-simple-android-game

原因是

Android 4.0.3 r2 才 增加GPU支持和CPU加速


祝你好运!


-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


2012-04-17更新:

cocos2d-x 0.13版本有些变动,需要用我改写的 ndk-build.cmd 文件进行编译且方法有2种,直接用NKD,脱离Eclipse编译库,第2还是用Eclipse 辅助编译库


批处理下载地址(内有使用说明)


http://download.csdn.net/detail/maojudong/4233381

脱离繁重的Cygwin.NDK编译脱离Cygwin


1. 请将文件放到cocos2d-1.0.1-x-0.13.0-beta目录下面
2. 打开build_android_ndk_tests.bat 文件 修改set NDK_ROOT=D:\Work7\android-ndk-r7c到你的NDK实际路径即可
3. jni/Application.mk 文件中加入APP_PLATFORM :=android-5
4. 在jni目录中添加双击此批处理即可编译库文件

注1:0.13版本的cocosw2d-x 搭配 Eclipse 也可以使用这个批处理,不要使用NDK自带的ndk-build.cmd
注2:此批处理可以脱离Eclipse,只用NDK自带的编译器即可,这里只用来编译库,如果要打包到APK还是需要Eclipse的,将刚刚编译的库导入即可

上面讲解了两种方法,自行选择

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
build_android_ndk.bat 需要在开始 --> 运行 CMD 后 运行的批处理
方法有2:

方法1: 运行build_android_ndk.bat -C tests/test.android/jni
方法2:
#cd tests/test.android/jni
#..\..\..\build_android_ndk.bat

效果是一样的

0.11 0.12 0.13 版本都测试通过


脱离繁重的Cygwin(但是使用cocoss2d-x下的create-android-project.bat创建还是需要Cygwin,你可以尝试更改这个文件,让其不依赖Cygwin,我相信能够做到,只是时间问题 ,呵呵)



版本:

Windows XP3

JDK1.6

Eclipse 3.7.1 (需要C++插件CDT)

ADT 16.0.1

NDK7 (或是NDKR7B)

cocos2d-1.0.1-x-0.11.0.zip(目前最新版)


注意:本教程没有用到minigw +msys,也没有用到cygwin ,如果用到的是NDK R6B 或是以前的版本,则需要安装cygwin(或是minigw + msys)

前提条件:假设已经成功安装了JDK + Eclipse + CDT + ADT

下面讲解如何在Eclipse中配置NDK ,运行cocos2d-x 自带的 test 工程

目录:

Step1. 下载 android-ndk-r7-windows.zip并解压

Step2. 下载cocos2d-x,并解压

Step3. Eclipse导入cocos2d-x test项目

Step4. Eclipse中配置NDK编译环境

Step5. 编译Android 项目

安装步骤:

Step1. 下载 android-ndk-r7-windows.zip并解压

下载地址:

http://dl.google.com/android/ndk/android-ndk-r7-windows.zip

下载完成后,将其解压到电脑的任何目录中,例如:

Hello, cocos2dx World


Step2. 下载cocos2d-x,并解压

下载地址:

http://cocos2d-x.googlecode.com/files/cocos2d-1.0.1-x-0.11.0.Zip

下载完成后,将其解压到电脑的任何目录中,例如:Hello, cocos2dx World



Step3. Eclipse导入cocos2d-x test项目

打开Eclipse

依次点击File New Project… AndroidProject

选择“Create Project from existing Source”

如下图所示,找到test.android 目录

Hello, cocos2dx World


点击Next


Hello, cocos2dx World


选择Android 2.1版本,这里直接点击Next ,或是Finish就创建完成了

Hello, cocos2dx World


Step 4. Eclipse中 配置NDK编译环境

首先选择TestDemos项目,然后选择菜单中的Project Properties

Hello, cocos2dx World

选择Bilders New -- Program

Hello, cocos2dx World


打开后,进行如下的设置:

Location:一定要选择ndk-build.cmd 命令

Working Directory:选择TestDemo


Hello, cocos2dx World


注意:这里如果是 0.13 之后的版本,请不要用ndk-build.cmd 文件,请用 我写的build_android_ndk_tests.bat (可以到我上面指定的地点下载)


下面选择Refresh ,配置如下:

Hello, cocos2dx World


越过Envirment ,直接点击Build Options,配置如下图所示:


Hello, cocos2dx World


设置完成后,点击OK

Eclipse 会自动的进行编译,耐心等待一会,下面是Eclipse开始自动进行编译的过程

(注意编译过程中有个小问题)


Hello, cocos2dx World


编译过程中的问题:


Hello, cocos2dx World


解决方法:

将android-ndk-r7\sources\cxx-stl\gnu-libstdc++\libs\armeabi\libgnustl_static.a 文件手动的copy到cocos2d-1.0.1-x-0.11.0\tests\test.android\obj\local\armeabi目录下

Hello, cocos2dx World


以上问题其实是Google NDK R7版本的bug,会在下一版本中更改( NDKR7B版本已经更改了这个bug,所以在NDKR7B上的话就不需要这一步了 )

http://code.google.com/p/android/issues/detail?id=22268


Hello, cocos2dx World


copy过去后执行下Project -clean 动作,系统又会自动的进行编译了,等待一点时间后,库文件就会编译完成


Hello, cocos2dx World

至此,cocos2d-x库文件就编译完成了

看到网友的反馈,说是找不到assets资源或是黑屏现象


原因是:android下的assets目录没有任何的资源文件,所以需要我们手动的将cocos2d-1.0.1-x-0.11.0\tests\Res 下的资源 复制到 cocos2d-1.0.1-x-0.11.0\tests\test.android\assets 目录中


复制完成后,还需要删除Images\test_image_rgba4444.pvr.gz 文件

Step5. 编译Android 项目

连接Android手机

依次点击 Run as…Android Application

运行Helloworld报错

Android NDK: jni/Android.mk: Cannot find module with tag 'cocos2dx' in import path
Android NDK: Are you sure your NDK_MODULE_PATH variable is properly defined ?
Android NDK: The following directories were searched:
Android NDK:
jni/Android.mk:19: *** Android NDK: Aborting. . Stop.


Android.mk引用了一个模块,cocos2dx模块,而NDK没有找到它,所以报了这个错,
之前的版本是直接包含cocos2dx模块的Android.mk的,所以不会报错
而这里使用了import,我们也可以使用之前版本的方法来包含它,但貌似import比之前的方法要更好一些
错误信息提示我们,可以通过设置NDK_MODULE_PATH环境变量,这里很有可能设置错误
一般,一个Android.mk包含一个或多个模块,当你要import cocos2dx模块时,
他会在这个路径下% NDK_MODULE_PATH\cocos2dx寻找Android.mk文件
所以我们编辑我们的Builder

Hello, cocos2dx World

Hello, cocos2dx World

添加NDK_MODULE_PATH变量,注意要写两个路径,用分号分开
D:\SDK\cocos2d-2.0-rc0a-x-2.0;D:\SDK\cocos2d-2.0-rc0a-x-2.0\cocos2dx\platform\third_party\android\prebuilt
因为cocos2dx还import了其他几个module,第二个路径制定了第三方的module,设置完就可以进行编译了

-----



读书人网 >操作系统

热点推荐