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

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

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

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

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

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

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

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

  1. 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脚本,把它替换成如下所示:

  1. # set params
    NDK_ROOT=/Volumes/Mydata/android-ndk-r7b/
    COCOS2DX_ROOT=../libs/cocos2dx
    GAME_ROOT=../
    GAME_ANDROID_ROOT=$GAME_ROOT/android
    RESOURCE_ROOT=$GAME_ROOT/Resources
  2.  
  3. # make sure assets is exist
    if [ -d $GAME_ANDROID_ROOT/assets ]; then
    rm -rf $GAME_ANDROID_ROOT/assets
    fi
  4.  
  5. mkdir $GAME_ANDROID_ROOT/assets
  6.  
  7. # copy resources
    for file in $RESOURCE_ROOT/*
    do
    if [ -d $file ]; then
    cp -rf $file $GAME_ANDROID_ROOT/assets
    fi
  8.  
  9. if [ -f $file ]; then
    cp $file $GAME_ANDROID_ROOT/assets
    fi
    done
  10.  
  11. # build
    $NDK_ROOT/ndk-build -C $GAME_ANDROID_ROOT $*

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

 

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

 

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

  1. APP_STL := gnustl_static
    APP_CPPFLAGS += -frtti
    APP_MODULES := cocos2dx_static cocosdenshion_shared box2d_shared game_logic_static game_static

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

 

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

  1. LOCAL_PATH := $(call my-dir)
  2.  
  3. include $(CLEAR_VARS)
  4.  
  5. LOCAL_MODULE := game_logic_static
  6.  
  7. LOCAL_MODULE_FILENAME := libgame_logic
  8.  
  9. LOCAL_SRC_FILES := AppDelegate.cpp \
    HelloWorldScene.cpp
  10.  
  11. LOCAL_C_INCLUDES := $(LOCAL_PATH)/../libs/cocos2dx \
    $(LOCAL_PATH)/../libs/cocos2dx/platform \
    $(LOCAL_PATH)/../libs/cocos2dx/include \
    $(LOCAL_PATH)/../libs/Box2D/ \
  12.  
  13. LOCAL_STATIC_LIBRARIES := png_static_prebuilt
    LOCAL_STATIC_LIBRARIES += xml2_static_prebuilt
    LOCAL_STATIC_LIBRARIES += jpeg_static_prebuilt
    LOCAL_WHOLE_STATIC_LIBRARIES += cocos2dx_static
  14.  
  15. LOCAL_SHARED_LIBRARIES := cocosdenshion_shared
    LOCAL_SHARED_LIBRARIES += box2d_shared
  16.  
  17. include $(BUILD_STATIC_LIBRARY)
  18.  
  19. $(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)

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

  1. make clean
    ./build_native.sh

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

  1. Gdbserver : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver
    Gdbsetup : libs/armeabi/gdb.setup
    Install : libcocosdenshion.so => libs/armeabi/libcocosdenshion.so
    Install : libbox2d.so => libs/armeabi/libbox2d.so
    Install : 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/

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

  1. cocos2d-x项目过程记录(ios和android设备的适配)

    (原创作品,欢迎转载,注明出处,谢谢:http://www.cnblogs.com/binxindoudou/admin/EditPosts.aspx?postid=3213645) 1.原理分析的博 ...

  2. cocos2d-x在win32和iOS、android下获取当前系统时间的方法

    最近在游戏里要显示当前系统时间的功能,网上一搜很多写着获取的方法,大都是如下 struct cc_timeval now; CCTime::gettimeofdayCocos2d(&now, ...

  3. cocos2dx 搭建 android 平台

    Mac OS X下配置Cocos2d-x for Android(Eclipse)&IOS(Xcode)开发环境 前面一段时间只用Cocos2d-x在IOS平台下开发, 学习Cocos2d-x ...

  4. 《React Native 精解与实战》书籍连载「配置 iOS 与 Android 开发环境」

    此文是我的出版书籍<React Native 精解与实战>连载分享,此书由机械工业出版社出版,书中详解了 React Native 框架底层原理.React Native 组件布局.组件与 ...

  5. Mac下配置cocos2d-x开发环境(android和ios)

    一.下载cocos2d-x http://cocos2d-x.org/projects/cocos2d-x/wiki/Download cocos2d-x-2.1.4.zip @ June.18, 2 ...

  6. cocos2d-x系列 Mac下配置cocos2d-x开发环境(android和ios)

    一.下载cocos2d-x http://cocos2d-x.org/projects/cocos2d-x/wiki/Download cocos2d-x-2.1.4.zip @ June.18, 2 ...

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

    注意:本文的Cocos2d-x的版本是2.2.3,更高版本可能会略有不同,低版本者不建议参考 首先需要配置XCODE环境 下载Cocos2d-x 然后下载Cocos2d-x的整个源码:http://w ...

  8. [转]Mac下cocos2dx-3.2+Xcode环境配置和项目创建

    原文:http://blog.csdn.net/u012200908/article/details/38070885 这是有关环境配置的第二篇教程,第一篇讲的是win8下的环境配置.这里我们使用C+ ...

  9. MAC下Xcode配置opencv(2017.3.29最新实践,亲测可行)

    本文原创,未经同意,谢绝转载!(转载请告知本人并且经过本人同意--By Pacific-hong) 本人小硕一枚,因为专业方向图像相关,所以用到opencv,然后网上MAC下Xcode配置opencv ...

随机推荐

  1. Delphi获取与设置系统时间格式,即GetLocaleInfo和SetLocaleInfo

    在Delphi中,特别是在写管理系统软件时,经常要用到 FormatDateTime 以将 TDateTime 格式的日期时间转换成字符串形式的值显示或保存起来,或者用 StrToDateTime将字 ...

  2. 使用Fiddler解析WCF RIA Service传输的数据

    原文 http://www.cnblogs.com/wintersun/archive/2011/01/05/1926386.html 使用Fiddler 2 解析WCF RIA Service传输的 ...

  3. Swagger+Spring MVC框架学习分享

    [html] view plain copy 最近参与公司接口编写,Android和IOS端都要调用这些接口,需要对接调试,如果没有一个接口文档,管理接口,别人用了接口,也不知道接口怎么用,接口上有什 ...

  4. JqGrid使用经验

    一.更改分页组件的样式 分页组件中

  5. Java面试题之七

    三十四.编码转换,怎样实现将GB2312 编码的字符串转换为ISO-8859-1 编码的字符串. String a=new String("中".getBytes("gb ...

  6. php获取apk信息

    使用方法如下: <?php require('apk_parser.php'); $p = new ApkParser(); /* if($argc<2) { echo "usa ...

  7. Android适配器Adapter学习

    在开发中我们需要绑定一些数据展现到桌面上,这是就需要AdapterView.AdapterView是ViewGroup的子类,它决定了怎么展现视图通过Adapter来绑定特殊的数据类型. Adapte ...

  8. Google Maps 学习笔记(一)2014.06.04

    1.<body onload="加载地图的函数" onunload="GUnload()"> 2.new GMap2(container,opts) ...

  9. jQuery validate api(转)

    官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation jQuery plugin: Validation 使用说明 转载 ...

  10. Activity 启动模式

    Activity的启动模式有四种,分别是standard.singleTop.singleTask.singleInstance.   Android是通过回退栈的模式来管理Activity实例的.栈 ...