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

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

免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该翻译稿之人无任何关系。谢谢合作!

原文链接地址:http://www.raywenderlich.com/11283/cocos2d-x-for-ios-and-android-getting-started

教程截图:

    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设备上面跑的“Hello World”程序。

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

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

Hello, Cocos2D-X for iOS!

    在继续之前,确保你先下载最新版本的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的hello wolrd程序跑起来了,如下图所示:

    非常简单,不是吗?这时,你可以看看xcode里面的文件,特别是Classes\HelloWorldScene.H和Classes\HelloWorldScene.cpp。如果你也熟悉cocos2d的话,那么里面的代码看起来会觉得非常熟悉---几乎完全一样的cocos2d API,只是语言是c++而已!

配置cocos2d-x的eclipse开发环境

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

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

   但是,请等一下。一个标准的eclipse android开发环境是专为java开发设计的,而cocos2d-x却是基于c++来做开发的!

    不用担心,eclipse已经有10年的历史了,它有许多插件可以支持其它语言的开发,这当然就包括c/C++语言的插件啦。先让我们来安装这个插件吧。打开eclipse,然后执行以下步骤:

  • 从Eclipse IDE的主工具栏上面,选择Help/Install New Software。
  • 打开Work With复选框,并从中选择一个包含你的eclipse版本名称的项(如果是最新版的eclipse的话,就选择indigo)
  • 在插件树里面找到Programming Languages (只有当你复选中“Group items by category”时,你才可以看到插件树。)并打开它.
  • 选择CDT插件,然后安装下列组件。(但是,请注意,你如果直接就点击C/C++ Development Tools的话,你是得不到下图所示的样子的,你还需要在“Mobile Development”里面去查找相关的项)(译者:我没找了,直接就选择了C/C++ Development Tools就Next安装了)

 点击next来完成向导,然后等待组件下载并安装。现在,你可以使用eclipse来开发C/C++项目了!

Setup the Android NDK (Native Development Toolkit)

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

    然而,现在你还可以通过Native Development Toolkit (NDK),使用C/C++来编写android程序。这种编程方式是由Google在2009年6月份引入的,它允许一些组件采用C/C++来编写,然后通过标准的Java Native Interface (JNI)来调用。

安装NDK的过程非常简单:

  • 下载最新版本的NDK。 here (注意选择 MacOSX 平台).
  • 解压tar.bz2 到任意目录.之后,我会使用$NDKROOT来指定这个解压缩后的目录。

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

   有了这套编译工具集,我们就可以在eclipse里面集成一些外部的C/C++库(比如cocos2d-x)。这些库被编译成动态库,然后通过JNI(Java Native Interface)与Java Android体系程序进行交互。

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

  • 独立模式: 直接在你的makefile中使用 arm-linux-androideabi-g++. 这种方式会增加你的项目的复杂性和可维护性。我推荐你不要使用这种方式。
  • 集成模式: 使用$NDKROOT/ndk-build shell 工具,它是一种高度可定制的makefile,专门为NDK库所设计的。这也是我们这篇教程所采用的方式。

 

解释JNI和NDK可能会花费大量时间,而且也超出了本教程的讨论范围。现在网络上有许多关于JNI的资源。这里还推荐一本书,它也讨论了JNI这个主题。

    如果你需要更多关于NDK的信息,这里推荐一本非常好的书,它里面涵盖了使用C/C++进行NDK开发,书名是: Android Native Development Kit Beginner’s Guide。这本书覆盖了NDK编程的方方面面,可谓是“从入门到精通”,而且NDK本身也带有非常详细的文档,在$NDKROOT/docs路径下面。

Hello, Cocos2D-X for Android!

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

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

    在$COCOS2DX_HOME目录下面包含一个shell脚本,叫做create-android-project.sh,我们可能通过它来创建android项目。但是,在运行脚本之前,我们需要在脚本文件的顶部做一些修改: 

# set environment paramters
NDK_ROOT_LOCAL="/home/laschweinski/android/android-ndk-r5"
ANDROID_SDK_ROOT_LOCAL="/home/laschweinski/android/android-sdk-linux_86"

 

修改上面这些行,把NDK_ROOT_LOCAL指向你安装Android NDK ($NDKROOT)的位置,同时把ANDROID_SDK_ROOT_LOCAL指向你安装Android SDK位置。(译者:这里其实可以不用修改,读者可以打开这个sh脚本去看看为什么。如果之前看过我的配置教程,里面有配置一个全局的NDK_ROOT和ANDROID_SDK_ROOT。

mouse注:

打开你的~/.bash_profile 键入

export NDK_ROOT="<path to NDK>"

export ANDROID_SDK_ROOT="<path to ANDROID_SDK>"

export SDK_ROOT="<path to ANDROID_SDK>"

保存之后 运行命令`source ~/.bash_profile`即可


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

    现在,可以运行create-android-project.sh脚本了,然后你会接收到一系列的提示输入。我们将一个个向您解释一下:

  1. 第一个提示要求你“Input package path”。这个包名会给后面的java代码使用。你可以使用你的域名反过来写,类似写ios的bundle ID。比如com.yourdomain.samplecocos2dxandroid ,记住实际输入的时候要替换掉“com.yourdomain”。
  2. 接下来,你会得到一系列可用的Android API和它们的id号。这个具体取决于你的机器上面安装的Andriod API的情况。
  3. 最后,你需要提供项目的名称,在这里取名为samplecocos2dxandroid

命令行的输出大致如下:

 

复制代码
bash-$ ./create-android-project.sh
Input package path. For example: org.cocos2dx.example
org.jymc.samplecocos2dxandroid
. . .
Available Android targets:
----------
. . .
----------
id: 9 or "Google Inc.:Google APIs:15"
     Name: Google APIs
     Type: Add-On
     Vendor: Google Inc.
     Revision: 1
     Description: Android + Google APIs
     Based on Android 4.0.3 (API level 15)
. . .
input target id:
9
input your project name:
samplecocos2dxandroid
Created project directory:
/Users/jymen/development/cocos2dx/samplecocos2dxandroid . . . Added file /Users/jymen/development/cocos2dx/samplecocos2dxandroid/AndroidManifest.xml Added file /Users/jymen/development/cocos2dx/samplecocos2dxandroid/build.xml Added file /Users/jymen/development/cocos2dx/samplecocos2dxandroid/proguard.cfg bash-$
复制代码

 注意“Created project directory:”这一行是脚本文件最后输出来的,这个输出的路径也就是你的Andriod项目被创建好的路径。我这里指的是/Users/jymen/development/cocos2dx/samplecocos2dxandroid,如上图所示:

Note: Do not try to move the project from that location to a different location. At least one of the scripts we’ll work with in the next section will not work if you do.

构建工程


方法一:配置eclipse 在eclipse中编译

1.导入两个项目 一个是你的,一个是cocos2d 注意在你的项目中设置好library为当前的cocos2d(通常导入eclipse中会叫java的一个工程)

2.修改全局编译路径 点击Eclipse中的偏好设定,在C/C++=>Build=>Environment 中添加刚刚的NDK_ROOT路径


3.修改全局编译路径 点击Eclipse中的偏好设定,在General=>Workspace=>Linked Resources 中添加cocos2dx路径

4.optional.因为我的eclipse有点问题 导入工程的时候会改写项目名字 明明是Crosskaiser变成了com.XXX.Crosskaiser 所以我这边还需要更改下项目名称右击项目 -> Refactor -> Rename -> `CrossKaiser`


方法二:在终端中编译:

    这里有两个步骤来构建项目----首先通过命令行脚本编译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\Android Project,然后点击Next,在Project Name里面输入samplecocos2dxandroid ,然后选择 Create project from existing source,然后浏览到$PROJECT_HOME/android文件夹,如下图所示:

 

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

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

在左边的树上右击项目,选择Run As\Android Application,然后AVD (Android Virtual Device)就会启动,然后就会跑出来Hello, Cocos2D-X项目了!

 

 注意:如果程序没有启动的话,你需要按照提示去创建一个AVD来测试。更多的细节,请参考Getting Started with Android Development 这篇教程。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值