cocos2dx跨androidios平台开发入门教程.docx

上传人:b****1 文档编号:10578501 上传时间:2023-05-26 格式:DOCX 页数:24 大小:2.33MB
下载 相关 举报
cocos2dx跨androidios平台开发入门教程.docx_第1页
第1页 / 共24页
cocos2dx跨androidios平台开发入门教程.docx_第2页
第2页 / 共24页
cocos2dx跨androidios平台开发入门教程.docx_第3页
第3页 / 共24页
cocos2dx跨androidios平台开发入门教程.docx_第4页
第4页 / 共24页
cocos2dx跨androidios平台开发入门教程.docx_第5页
第5页 / 共24页
cocos2dx跨androidios平台开发入门教程.docx_第6页
第6页 / 共24页
cocos2dx跨androidios平台开发入门教程.docx_第7页
第7页 / 共24页
cocos2dx跨androidios平台开发入门教程.docx_第8页
第8页 / 共24页
cocos2dx跨androidios平台开发入门教程.docx_第9页
第9页 / 共24页
cocos2dx跨androidios平台开发入门教程.docx_第10页
第10页 / 共24页
cocos2dx跨androidios平台开发入门教程.docx_第11页
第11页 / 共24页
cocos2dx跨androidios平台开发入门教程.docx_第12页
第12页 / 共24页
cocos2dx跨androidios平台开发入门教程.docx_第13页
第13页 / 共24页
cocos2dx跨androidios平台开发入门教程.docx_第14页
第14页 / 共24页
cocos2dx跨androidios平台开发入门教程.docx_第15页
第15页 / 共24页
cocos2dx跨androidios平台开发入门教程.docx_第16页
第16页 / 共24页
cocos2dx跨androidios平台开发入门教程.docx_第17页
第17页 / 共24页
cocos2dx跨androidios平台开发入门教程.docx_第18页
第18页 / 共24页
cocos2dx跨androidios平台开发入门教程.docx_第19页
第19页 / 共24页
cocos2dx跨androidios平台开发入门教程.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

cocos2dx跨androidios平台开发入门教程.docx

《cocos2dx跨androidios平台开发入门教程.docx》由会员分享,可在线阅读,更多相关《cocos2dx跨androidios平台开发入门教程.docx(24页珍藏版)》请在冰点文库上搜索。

cocos2dx跨androidios平台开发入门教程.docx

cocos2dx跨androidios平台开发入门教程

cocos2d-x跨android&ios平台开发入门教程

免责申明(必读!

):

本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。

同时,转载时不要移除本申明。

如产生任何纠纷,均与本博客所有人、发表该翻译稿之人无任何关系。

谢谢合作!

原文链接地址:

教程截图:

  Cocos2D是一个非常棒而且非常容易使用的游戏框架,但是,由于它是采用objc写的,所以你只能使用它来开发ios和mac下面的游戏。

  假如你可以使用和cocos2d相似的api来开发android上面的游戏,那岂不是更爽?

这样,你就可以毫不费劲地扩大你的游戏的市场份额(android的用户数量巨大啊!

  好吧,确实存在这么一个游戏框架,她就是cocos2d-x!

cocos2d-x采用c++把cocos2d的api重新移植了一遍,,除了一些语法细节上面的差异之外,你可以使用几乎一样的api来编写游戏。

正是由于它是c++写的,所以可以跨多个平台,从ios到android、windows、再到linux、bada等!

  在这篇教程里面,你将学习到,如何使用cocos2d-x和c++来编写一个能够同时在ios和android设备上面跑的“HelloWorld”程序。

  而且,过两天,我会再出一篇教程,向大家展示一个具体的游戏例子---一个跨平台的太空射击游戏!

  好了,带上你的iPhone和Android设备,让我们开始吧!

Hello,Cocos2D-XforiOS!

  在继续之前,确保你先下载最新版本的cocos2d-x。

  随便在你的硬盘的某个位置上面解压就可以了。

注意,这个解压出来的文件夹的完整路径名,我们之后会用一个统一的别名 $COCOS2DX_HOME来指代。

  现在,你已经下载到源码了,让我们来安装项目模板吧!

你可以先cd到$COCOS2DX_HOME这个目录(译者:

指你刚刚解压缩代码的存放路径)下面去。

在安装模板之前,先退出Xcode,然后打开一个终端,并输入下面的命令:

cd$COCOS2DX_HOME

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

注意:

在上面所示的代码中,你不能直接输入$COCOS2DX_HOME,而要输入实际的路径。

如果你直接输入了$COCOS2DX_HOME是不会有任何反应的。

当然,你可以参考我写的《如何在macos下面配置集成ios和android游戏教程》,里面有讲到环境变量的配置。

大概方法就是打开~/.bash_profile文件,然后用export来定义环境变量就ok了。

  你可能会被要求输入管理员密码(加了-u应该是不需要输入密码的,不加-u就需要输入),之后的过程就非常简单了。

在模板安装好之后,启动xcode,然后创建一个新的项目。

这时,你可以在项目模板对话框中看到有cocos2d-x的模板了。

不用担心,cocos2d-x的模板与cocos2d的模板并不会有冲突,因此,你还是可以创建cocos2d的项目。

  让我们来试一下新模板吧!

打开Xcode,然后创建一个新的工程,选择 iOS\cocos2d-x\cocos2dx模板,如下图所示:

  把工程例句为Cocos2DxFirstIosSample,然后保存。

  现在,编译并运行,你将会看到cocos2d-x的hellowolrd程序跑起来了,如下图所示:

  非常简单,不是吗?

这时,你可以看看xcode里面的文件,特别是Classes\HelloWorldScene.H和Classes\HelloWorldScene.cpp。

如果你也熟悉cocos2d的话,那么里面的代码看起来会觉得非常熟悉---几乎完全一样的cocos2dAPI,只是语言是c++而已!

配置cocos2d-x的eclipse开发环境

  现在我们已经完成了Xcode4的helloworld程序了,是时候看看如何使用eclipse来配置android的cocos2d-x开发环境了。

  这篇教程假设你有一个可以进行Android开发的标准开发环境。

如果你还没有的话,可以参考这篇教程来配置,它里面提供了详细的过程,教你如何一步步配置好一个标准的eclipseandroid开发环境。

  但是,请等一下。

一个标准的eclipseandroid开发环境是专为java开发设计的,而cocos2d-x却是基于c++来做开发的!

  不用担心,eclipse已经有10年的历史了,它有许多插件可以支持其它语言的开发,这当然就包括c/C++语言的插件啦。

先让我们来安装这个插件吧。

打开eclipse,然后执行以下步骤:

∙从EclipseIDE的主工具栏上面,选择Help/InstallNewSoftware。

∙打开WorkWith复选框,并从中选择一个包含你的eclipse版本名称的项(如果是最新版的eclipse的话,就选择indigo)

∙在插件树里面找到ProgrammingLanguages(只有当你复选中“Groupitemsbycategory”时,你才可以看到插件树。

)并打开它.

∙选择CDT插件,然后安装下列组件。

(但是,请注意,你如果直接就点击C/C++DevelopmentTools的话,你是得不到下图所示的样子的,你还需要在“MobileDevelopment”里面去查找相关的项)(译者:

我没找了,直接就选择了C/C++DevelopmentTools就Next安装了)

 点击next来完成向导,然后等待组件下载并安装。

现在,你可以使用eclipse来开发C/C++项目了!

SetuptheAndroidNDK(NativeDevelopmentToolkit)

 本来,android开发只能采用java,而且现在市场上面大部分的app也是采用java写的。

   然而,现在你还可以通过NativeDevelopmentToolkit(NDK),使用C/C++来编写android程序。

这种编程方式是由Google在2009年6月份引入的,它允许一些组件采用C/C++来编写,然后通过标准的JavaNativeInterface(JNI)来调用。

安装NDK的过程非常简单:

∙下载最新版本的NDK。

 here (注意选择MacOSX平台).

∙解压tar.bz2到任意目录.之后,我会使用$NDKROOT来指定这个解压缩后的目录。

   NDK给Android开发带来了全套的C/C++编译工具集,可以使用GCC4.4.3来编译来链接并且可以构建即时安装的APK包。

  有了这套编译工具集,我们就可以在eclipse里面集成一些外部的C/C++库(比如cocos2d-x)。

这些库被编译成动态库,然后通过JNI(JavaNativeInterface)与JavaAndroid体系程序进行交互。

这些编译工具集可以采用下面两种方式使用:

∙独立模式:

直接在你的makefile中使用arm-linux-androideabi-g++.这种方式会增加你的项目的复杂性和可维护性。

我推荐你不要使用这种方式。

∙集成模式:

使用$NDKROOT/ndk-buildshell工具,它是一种高度可定制的makefile,专门为NDK库所设计的。

这也是我们这篇教程所采用的方式。

 

解释JNI和NDK可能会花费大量时间,而且也超出了本教程的讨论范围。

现在网络上有许多关于JNI的资源。

这里还推荐一本书,它也讨论了JNI这个主题。

   如果你需要更多关于NDK的信息,这里推荐一本非常好的书,它里面涵盖了使用C/C++进行NDK开发,书名是:

 AndroidNativeDevelopmentKitBeginner’sGuide。

这本书覆盖了NDK编程的方方面面,可谓是“从入门到精通”,而且NDK本身也带有非常详细的文档,在$NDKROOT/docs路径下面。

Hello,Cocos2D-XforAndroid!

   现在,让我们在Andriod平台上面来开发一个“Hello,World”程序吧,就像我们之前在ios平台上的程序一样。

   我们需要通过命令行来完成工作,因为目前还没有在EclipseIDE里面集成cocos2d-x的模板。

   在$COCOS2DX_HOME目录下面包含一个shell脚本,叫做create-android-project.sh,我们可能通过它来创建android项目。

但是,在运行脚本之前,我们需要在脚本文件的顶部做一些修改:

 

#setenvironmentparamters

NDK_ROOT_LOCAL="/home/laschweinski/android/android-ndk-r5"

ANDROID_SDK_ROOT_LOCAL="/home/laschweinski/android/android-sdk-linux_86"

 

修改上面这些行,把NDK_ROOT_LOCAL指向你安装AndroidNDK($NDKROOT)的位置,同时把ANDROID_SDK_ROOT_LOCAL指向你安装AndroidSDK位置。

(译者:

这里其实可以不用修改,读者可以打开这个sh脚本去看看为什么。

如果之前看过我的配置教程,里面有配置一个全局的NDK_ROOT和ANDROID_SDK_ROOT。

这个脚本在判断有全局的环境变量存在的时候,会直接替代NDK_ROOT_LOCAL和ANDROID_SDK_ROOT_LOCAL。

   现在,可以运行create-android-project.sh脚本了,然后你会接收到一系列的提示输入。

我们将一个个向您解释一下:

1.第一个提示要求你“Inputpackagepath”。

这个包名会给后面的java代码使用。

你可以使用你的域名反过来写,类似写ios的bundleID。

比如com.yourdomain.samplecocos2dxandroid,记住实际输入的时候要替换掉“com.yourdomain”。

2.接下来,你会得到一系列可用的AndroidAPI和它们的id号。

这个具体取决于你的机器上面安装的AndriodAPI的情况。

3.最后,你需要提供项目的名称,在这里取名为samplecocos2dxandroid:

命令行的输出大致如下:

 

bash-$./create-android-project.sh

Inputpackagepath.Forexample:

org.cocos2dx.example

org.jymc.samplecocos2dxandroid

...

AvailableAndroidtargets:

----------

...

----------

id:

9or"GoogleInc.:

GoogleAPIs:

15"

Name:

GoogleAPIs

Type:

Add-On

Vendor:

GoogleInc.

Revision:

1

Description:

Android+GoogleAPIs

BasedonAndroid4.0.3(APIlevel15)

...

inputtargetid:

9

inputyourprojectname:

samplecocos2dxandroid

Createdprojectdirectory:

/Users/jymen/development/cocos2dx/samplecocos2dxandroid

...

Addedfile/Users/jymen/development/cocos2dx/samplecocos2dxandroid/AndroidManifest.xml

Addedfile/Users/jymen/development/cocos2dx/samplecocos2dxandroid/build.xml

Addedfile/Users/jymen/development/cocos2dx/samplecocos2dxandroid/proguard.cfg

bash-$

 注意“Createdprojectdirectory:

”这一行是脚本文件最后输出来的,这个输出的路径也就是你的Andriod项目被创建好的路径。

我这里指的是/Users/jymen/development/cocos2dx/samplecocos2dxandroid,如上图所示:

Note:

Donottrytomovetheprojectfromthatlocationtoadifferentlocation.Atleastoneofthescriptswe’llworkwithinthenextsectionwillnotworkifyoudo.

构建工程

   这里有两个步骤来构建项目----首先通过命令行脚本编译c++代码,然后通过ecipse来编译java代码。

   为了编译c++代码,我们需要切换到$PROJECT_HOME/android文件夹下面去,然后在终端里面输入下列命令:

./build_native.sh

你应该会看到下面类似的输出:

Gdbserver:

[arm-linux-androideabi-4.4.3]libs/armeabi/gdbserver

Gdbsetup:

libs/armeabi/gdb.setup

Compile++thumb:

cocos2d<=CCConfiguration.cpp

Compile++thumb:

cocos2d<=CCDrawingPrimitives.cpp

:

:

:

Compile++thumb:

cocos2d<=CCTileMapAtlas.cpp

Compile++thumb:

cocos2d<=CCTouchDispatcher.cpp

Compile++thumb:

cocos2d<=CCTouchHandler.cpp

Prebuilt:

libstlport_static.a<=/sources/cxx-stl/stlport/libs/armeabi/

SharedLibrary:

libcocos2d.so

Install:

libcocos2d.so=>libs/armeabi/libcocos2d.so

Compile++thumb:

cocosdenshion<=SimpleAudioEngine.cpp

Compile++thumb:

cocosdenshion<=SimpleAudioEngineJni.cpp

SharedLibrary:

libcocosdenshion.so

Install:

libcocosdenshion.so=>libs/armeabi/libcocosdenshion.so

Compile++thumb:

game_logic<=AppDelegate.cpp

Compile++thumb:

game_logic<=HelloWorldScene.cpp

SharedLibrary:

libgame_logic.so

Install:

libgame_logic.so=>libs/armeabi/libgame_logic.so

Compile++thumb:

game<=main.cpp

SharedLibrary:

libgame.so

Install:

libgame.so=>libs/armeabi/libgame.so

 这里就是在编译cocos2d-x库和你的项目里面的c++文件。

   为了编译java代码,我们需要创建一个eclipse工程---这可比命令行要方便多了。

   打开Eclipse,然后他吃软饭File\New\Other,选择Android\AndroidProject,然后点击Next,在ProjectName里面输入samplecocos2dxandroid ,然后选择 Createprojectfromexistingsource,然后浏览到$PROJECT_HOME/android文件夹,如下图所示:

 

  点击Next,选择一个 Androidversiontotarget(这里选择的是3.2,你可以选择任何一个)

点击Finish,好了,现在你有一个工程了!

在左边的树上右击项目,选择RunAs\AndroidApplication,然后AVD(AndroidVirtualDevice)就会启动,然后就会跑出来Hello,Cocos2D-X项目了!

 

 注意:

如果程序没有启动的话,你需要按照提示去创建一个AVD来测试。

更多的细节,请参考GettingStartedwithAndroidDevelopment 这篇教程。

   恭喜你,你现在有一个“Hello,World”项目可以同时跑在ios和android上面了!

 

在Eclipse里面定义一个结合java/c++的工程

 

   通过命令脚本来编译c++代码,完了之后用eclipse来编译java代码,这种来回切换的做法非常笨重。

如果全部可以用eclipse来完成的话,那么生活会更简单一些。

   幸运的是,我们可以告诉eclipse,我们的android项目是一个集成java/c++的跨语言项目!

  为此,我们在左边的项目树上选择samplecocos2dxandroid,然后从菜单里面选择File\New\Other,然后从对话框里面选择C/C++\ConverttoaC/C++Project,如下所示:

 

点击Next。

在下一个屏幕里面,选中你的项目,然后选择c++单选按钮,然后为Projecttype指定Makefileproject\OtherToolchain,如下所示:

  点击完成。

这时eclipse会询问你是否打开C/C++视图,当对话框出现的时候,选择NO。

  接下来的步骤就是修改项目设置,指定如何运行我们的make命令。

在左边的项目树上,右击samplecocos2dxandroid工程,选择Properties,然后选择C/C++build

取消“Usedefaultbuildcommand”复选框,然后在build文本框中输入下面的命令:

bash${workspace_loc:

/samplecocos2dxandroid}/build_native.shNDK_DEBUG=1V=1

点击Apply,然后点OK。

  回到ecipse,从主菜单中选择Project\BuildAll,这时你可以在ecipse的控制台输出中看到c++make在运行。

我们仍然有一些警告需要解决。

想知道我是什么意思吗,你打开jni/helloworld/main.cpp,这里你会看到一系列的警告,如下所示:

这些警告之所以会出现,是因为我们没有配置正确的c++包含路径。

为了解决它,我们右击samplecocos2dxandroid工程,然后选择Properties\C/C++General\PathandSymbols\GNUC++。

  选择Add…按钮来选择下面的目录,之后点击Apply和OK。

$(NDKROOT)/platforms/android-9/arch-arm/usr/include

$(COCOS2DX_HOME)/cocos2dx/include

注意:

不用忘了使用实际的路径来替换掉$(NDKROOT)和$(COCOS2DX_HOME)。

 

 点击Apply,这时会提示你是否重建索引。

直接点击yes继续就可以了。

  现在,你再看看main.cpp,你会看到大部分警告已经消失了。

 但是,AppDelegate.h文件还是找不到。

这是因为AppDelegate.h是在$PROJECT_HOME\Classes文件夹下面。

这个文件夹对我们来说非常重要,因为它包含了我们工程里面的可移植的c++类,比如HelloWorldScene.cpp等。

   当我们创建eclipse项目的时候,我们必须选择$PROJECT_HOME\android文件夹,因为eclipse需要一个AndroidManifest.xml文件。

但是,这样的话,我们的工程就不包括关键的“Classes”文件夹了,这也是为什么我们会得到这么多警告的原因。

  让我们来修正它吧。

右击samplecocos2dxandroid项目,选择Properties\C/C++General\PathsandSymbols\Sourcelocation。

点击LinkFolder,然后复选中Linktoafolderinthefilesystem,接着浏览到$PROJECT_HOME文件夹,并指向Classes目录,最后点Apply和OK。

你现在可以在文件树里面看到Classes目录了,而且在main.cpp里面的#include“AppDelegate.h”警告也应该消失了。

  Eclipse工程里面还会有许多警告,但是,这是因为eclipse对于解析c++头文件的能力并不强大。

为了消除这些警告,我们又需要设置一下项目设置。

(右键点工程,然后选择Properties),把CodeAnalysis部分的warnings关闭,如下图所示:

 然后点击Apply和OK,这时,你就得到一个工程可以在eclipse里面进行编辑了。

 

WhatAbouttheJavaCode?

   这时你在eclipse里面再找找看,你会在src和gen目录下面找到一些java代码,你肯定很好奇这些代码是干吗用的。

  Andriod开发采用的主要语言是java,这个项目模板已经为我们创建了一些java框架代码,用来加载c++编写好的动态库。

  一般情况下,你是不需要修改这些java代码的,但是,还是让我们来看看src\com\xxx\samplecosos2dxandroid\samplecocos2dandroid.java这个类。

  这个类包含了主AndroidActivity类,当应用程序启动的时候会加载。

它首先通过NDK来请求编译好的c++动态库。

(如果采用的是最新版的coocs2dx的话,下面只会加载一个game库)

 

 由于类是从Cocos2dxActivity所派生,在后台cocos2d-x会把控制权移交给c++的AppDelegate的initInstance方法来处理,最后applicationDidFinishLAunching方法也就被执行

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2