mac下面xcode+ndk7配置cocos2dx & box2d的跨ios和android平台的游戏教程

这篇教程是介绍如何使用cocos2d-x和box2d来制作一个demo,且此demo能同时运行于ios和android平台。在继续阅读之前,建议您先阅读上一篇教程

首先,按照上一篇教程,搭建好mac下面的cocos2dx和android开发环境,注意配置好一些环境变量的值,比如$COCOS2DX_ROOT等。然后使用Xcode建立一个cocos2dx_box2d项目,命名为Box2DTest,如下图所示:

然后,还是和之前一样,用cocos2dx安装目录下的脚本来创建一个android工程,我们把这个工程命名为Box2DTest。

接下来,就是创建一个makefile了:

首先,选择一个你最喜欢的文本编辑器,然后cd到刚刚这个Box2DTest的android目录下面,然后打开terminal,输入:

vim makefile

//然后会创建一个新的窗口,接着输入i进入编辑模式,然后键入下面3条语句clean:    rm -rf libs/    rm -rf obj/

请特别注意,这里的clean:是顶格输入的,而两条rm语句是使用tab键缩进的。如果不缩进,则输入make clean的时候会报错。

输入完后,esc(回到命令模式) :wq 回车,保存并退出。ok,搞定,然后输入make clean,如果出现下面的输出,则表示ok了:

rm -rf libs/rm -rf obj/

接下来,把一些android相关的文件拷贝到之前建好的ios项目下面去。(注意$符号+环境变量名,是你之前定义的目录的别名,即$COCOS2DX_ROOT表示你的cocos2dx的解压缩目录

第一步,把android这个文件夹从$COCOS2DX_ROOT/Box2DTest/android/拷贝到iphone的工程目录下面去,和ios这个文件夹在同一目录。(最终的目录是Box2DTest/Box2DTest/android/)

第二步,把Android.mk这个文件从$COCOS2DX_ROOT/Box2DTest/Classes/拷贝到Box2DTest/Box2DTest/Classes/下面

第三步,把Android.mk从$COCOS2DX_ROOT/cocos2dx/拷贝到Box2DTest/Box2DTest/libs/cocos2dx/下面

第四步,把android文件夹从$COCOS2DX_ROOT/CocosDenshion拷贝到Box2DTest/Box2DTest/libs/CocosDenshion/下面去。

第五步,把Android.mk从COCOS2DX_ROOT/Box2D/拷贝到Box2DTest/Box2DTest/libs/Box2D/下面去。

最后一步,把platform这个文件夹从$COCOS2DX_ROOT/cocos2dx/platform拷贝到Box2DTest/Box2DTest/libs/cocos2dx/下面去。

当然,这个platform有点大,大约有114M,其中除了android,third_party和ios这三个文件夹不能删除之外,其它文件夹全部可以删除,特别注意!!!!

不要删除那些文件,一个文件也不能删除!!!!

接下来,我们配置一下build_native.sh脚本,把它替换成如下所示:

# set paramsNDK_ROOT=/Volumes/Mydata/android-ndk-r7b/COCOS2DX_ROOT=../libs/cocos2dxGAME_ROOT=../GAME_ANDROID_ROOT=$GAME_ROOT/androidRESOURCE_ROOT=$GAME_ROOT/Resources

# make sure assets is existif [ -d $GAME_ANDROID_ROOT/assets ]; then    rm -rf $GAME_ANDROID_ROOT/assetsfi

mkdir $GAME_ANDROID_ROOT/assets

# copy resourcesfor file in $RESOURCE_ROOT/*do    if [ -d $file ]; then        cp -rf $file $GAME_ANDROID_ROOT/assets    fi

    if [ -f $file ]; then        cp $file $GAME_ANDROID_ROOT/assets    fidone

# build$NDK_ROOT/ndk-build -C $GAME_ANDROID_ROOT $*

注意,这里的NDK_ROOT要改成你自己的路径。

 

然后修改android/jni/Android.mk,修改成下面的样子:

 

同时把Application.mk修改成下面的样子:

APP_STL := gnustl_staticAPP_CPPFLAGS += -frttiAPP_MODULES := cocos2dx_static cocosdenshion_shared box2d_shared game_logic_static game_static

然后,把android/jni/helloworld/Android.mk修改成下面的样子:

 

然后把Classes/Android.mk修改成下面的样子:(以后游戏越做越大,则可以在LOCAL_SRC_FILES里面再添加源文件即可

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := game_logic_static

LOCAL_MODULE_FILENAME := libgame_logic

LOCAL_SRC_FILES := AppDelegate.cpp \                   HelloWorldScene.cpp

LOCAL_C_INCLUDES := $(LOCAL_PATH)/../libs/cocos2dx \                    $(LOCAL_PATH)/../libs/cocos2dx/platform \                    $(LOCAL_PATH)/../libs/cocos2dx/include \                    $(LOCAL_PATH)/../libs/Box2D/ \

LOCAL_STATIC_LIBRARIES := png_static_prebuiltLOCAL_STATIC_LIBRARIES += xml2_static_prebuiltLOCAL_STATIC_LIBRARIES += jpeg_static_prebuiltLOCAL_WHOLE_STATIC_LIBRARIES += cocos2dx_static

LOCAL_SHARED_LIBRARIES := cocosdenshion_sharedLOCAL_SHARED_LIBRARIES += box2d_shared

include $(BUILD_STATIC_LIBRARY)

$(call import-module,cocos2dx/platform/third_party/android/modules/libpng)$(call import-module,cocos2dx/platform/third_party/android/modules/libxml2)$(call import-module,cocos2dx/platform/third_party/android/modules/libjpeg)

然后打开终端,依次输入:

make clean./build_native.sh

如果一切顺利,你将得到如下输出:

Gdbserver      : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserverGdbsetup       : libs/armeabi/gdb.setupInstall        : libcocosdenshion.so => libs/armeabi/libcocosdenshion.soInstall        : libbox2d.so => libs/armeabi/libbox2d.soInstall        : libgame.so => libs/armeabi/libgame.so

最后,就和上一篇教程中一样了,打开eclipse,导入工程,然后运行就ok啦。下面给出v880的最终运行效果图:

 

   从配置box2d的过程中,我们可以看出,这跟上一篇教程中配置的方法差不多,唯一不同的是一些Android的mk文件的差别。大家可以参考一下ndk的文档,然后结合本实例就可以找出端倪了。下次如果配置ffmpeg或者其它第三方的c/c++库,都可以采用这种方式来配置。

   如果有人成功配置了其它第三方库,欢迎留言分享,学雷锋,做好事:)


要论坛交流,请点击传送门

参考资料:http://gameit.ro/2011/08/creating-a-cocos2d-x-box2d-android-project/

时间: 2024-08-01 02:33:28

mac下面xcode+ndk7配置cocos2dx & box2d的跨ios和android平台的游戏教程的相关文章

「Unity」与iOS、Android平台的整合:1、导出的Xcode工程

本文属于「Unity与iOS.Android平台的整合」系列文章之一. 本文主要讲解Unity导出的Xcode工程的目录结构. 我所用软件的版本: Unity 5.3.5f1 Xcode 7.3 前导步骤 第一步,创建一个新的工程 Build_to_iOS_Android 第二步,创建一个新文件 CSharpToCPP.cs using UnityEngine; public class CSharpToCPP { public void Func(int num) { if (num < 1)

Mac上安装和配置Appium

安装说明: 之前看过网上的介绍,安装Appium通常有两种方式:一种是使用NodeJS的npm命令安装Appium服务:第二种是安装Appium GUI,这里面包含了Appium需要的NodeJS.Appium Server.Appium-Inspector 等组件.而Mac版的Appium GUI,不仅支持iOS和Android平台,还有录制功能.有条件的话,还是推荐在Mac OSX上测试.(其实Mac mini不算太贵) 1.安装Java JDK,并配置Java环境变量 1.1 官方下载地址

Mac系统完美配置Cocos2d-x 2.2.3 的Android+IOS双平台环境

转自:http://www.cnblogs.com/wt616/p/3758828.html readme:自测cocos2d-x2.2.5版本也ok.就按照下面文档说明对照来配置,还是乖乖的新建工程,别拷贝别的地方工程,不然可能出现各种莫名其妙的bug. 注意:本文的Cocos2d-x的版本是2.2.3,更高版本可能会略有不同,低版本者不建议参考 首先需要配置XCODE环境 下载Cocos2d-x 然后下载Cocos2d-x的整个源码:http://www.cocos2d-x.org/down

cocos2d-x 3.0在mac下的基本配置

随着3.0正式版的发布,有必要开始对其进行一番研究.首先就从环境搭建以及基本的配置开始. 其实在cocos2d-x的官方wiki中已经有了比较详细的介绍,只不过是英文的,这里针对实际操作给大家简单翻译说明一下. 创建一个cocos2d-x项目 1.1 环境需要 Android 2.3 或更新版本 ios 5.0 或更新版本 OS X 10.7 或更新版本 Xcode 4.6 以上版本 gcc 4.7 和Android ndk-r9以上版本 Python 2.7.5 1.2 创建一个新的项目 首先

Cocos2dx-Mac下的环境配置

本文转载于http://www.cnblogs.com/zisou/p/cocos2d-xpeizhi0.html 目前我配置的环境需求如下: JDK 1.6 XCode Version 4.6 (4H127) Cocos2d-x 2.2.0  Android Developer  一,下载安装 要配置环境一次性下载准备要以下东西: 1,下载jdk,地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 2,下载

Cocos2dx3.1+xcode +lua配置

cocos2dx 得版本真特么得是值得一骂! 3.1版本得lua相关文件需要自己导入.  看了很多资料,仍然没有所获. 后来自己创建了一个lua项目. 一个一个得找不同. 1.首先, 需要引入 cocos2d_lua_bingings子项目. 引入方式就是再空白处 add files 就可以了. 这个项目在cocos2d/cocos/scripting/lua-bindings 下. 当然 这不是你得项目内得, 而是cocos2dx 3.1下. 首先把scripting这个文件夹直接拷贝到项目对

Mac 下SVN 的配置(Xcode6.1下)

Mac 下SVN  的配置(Xcode6.1下) 1.可以根据下面的2个博客根据自己的需要来配置 http://blog.csdn.net/jingjingxujiayou/article/details/42105641 http://blog.csdn.net/jingjingxujiayou/article/details/42085053 我的是在一个新电脑上面,环境需要全新的配置 2.下面是配置过程和配置的问题 下面的操作前提是电脑的svn环境用已经确认配好了. 根据上面的两个博客配好

如何解决xcode里开发cocos2dx修改lua脚本后不刷新的问题

用xcode来开发cocos2dx,结果发现一个很纠结的问题,如果我一旦修改了一个Lua文件,我必须clean之后再build,否则修改的Lua文件不会体现出来.这是一个很令纠结的结果,特别是我要进行调试的时候,在网上搜索了一圈,发现xcode原来可以提供一个build phase的功能,允许在build中间执行一些脚本,而这个时候只要将脚本文件touch一下就可以解决问题,但是比较奇怪的是,如果是touch Resources文件是不行的,必须touch Resources目录下的某个文件.

在Mac OS X中配置Apache + PHP + MySQL

在Mac OS X中配置Apache + PHP + MySQL Mac OS X 内置Apache 和 PHP,使用起来非常方便.本文以Mac OS X 10.6.3和为例.主要内容包括: 启动Apache 运行PHP 安装MySQL 使用phpMyAdmin 配置PHP的MCrypt扩展库 设置虚拟主机 启动Apache 有两种方法: 打开“系统设置偏好(System Preferences)” -> “共享(Sharing)” -> “Web共享(Web Sharing)”. 打开“终端