Linux下搭建 Cocos2d-x-2.1.4 编译环境

【tonyfield 2013.08.29 】

1. 环境搭建

  本人开发环境是 Linux tony-U2 3.2.0-52-generic #78-Ubuntu SMP Fri Jul 26 16:21:44 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux (uname -l 照录)

  工具是 google上下载的 adt-bundle-linux-x86_64-20130729,Eclipse IDE比较熟,本来想试试xCode,听说Linux用不了,作罢。Help ->Install New Software... 添加 NDK,必须的,另外也去下载个NDK,我用的是android-ndk-r9,各种SDK包全装上。

  再去 http://cocos2d-x.org/ 下载最新 Cocos2d-x-2.1.#。写这篇文章时,已经是 2.1.15了。但我这儿提到的代码内容都请参考 Cocos2d-x-2.1.14。解压缩到 /home/yourname/cocos2d-x-2.1.4,进入这个目录,运行 make-all-linux-project.sh,和Android没啥关系,但会提醒你安装一堆工具,大致是install-deps-linux.sh 提到的种种,你用下面命令搞定也行,不安装估计对Android 项目没有影响,我就不卸载了评测了,麻烦。

$sudo apt-get install libx11-dev  libxmu-dev  libglu1-mesa-dev libgl2ps-dev  libxi-dev libglfw-dev  g++ libzip-dev  libcurl4-gnutls-dev libfontconfig1-dev libsqlite3-dev libglew*-dev


2. 导入例程HelloCpp

  估计cocos2d项目不是在 Eclipse下开发的(可以印证的是cocos2d-x-2.1.4目录下有一个名为 install-templates-xcode.sh 的脚本文件),C/C++文件组织形式和Eclipse很不相同,可以说是更灵活了。可惜要引入死板的Eclipse Android项目框架,必须重新摆放文件位置,以HelloCpp为例。

  打开Eclipse,假设 Eclipse 工作目录是 /home/yourname/workspace,新建 File -> New -> Project...,选择 Android Project from Existing Code,选择/home/yourname/cocos2d-x-2.1.4/samples/Cpp/HelloCpp目录,选中“copy projects into workspace”,导入项目。

2.1 文件位置

 将公用类代码 /home/yourname/cocos2d-x-2.1.4/samples/Cpp/HelloCpp/Classes 复制到 HelloCpp/jni;

 将assets资源 /home/yourname/cocos2d-x-2.1.4/samples/Cpp/HelloCpp/Resources 复制到 HelloCpp/assets;

2.2 修改编译脚本

修改 Android.mk

将 LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes

改为 LOCAL_C_INCLUDES := $(LOCAL_PATH)/Classes

修改 build_native.sh

COCOS2DX_ROOT="$DIR/../../../.."

改为

 

if [ -z "${COCOS2DX_ROOT}" ];then
COCOS2DX_ROOT="$DIR/../../../.."
echo "Warning: COCOS2DX_ROOT not defined. will use default value( $COCOS2DX_ROOT )"
fi

 

 

2.3 项目属性

 

之后配置一下局部环境变量,在项目属性C/C++ Build -> Environment 中添加

ProjDirPath                           ${PWD}

COCOS2DX_ROOT            /home/yourname/cocos2d-x-2.1.4 或你的Cocos2dx路径

NDK_MODULE_PATH       ${COCOS2D_ROOT}:${COCOS2D_ROOT}/cocos2dx/platform/third_party/android/prebuilt

NDK_ROOT                          <你的NDK 路径>

在项目属性C/C++ General -> Paths and Symbols 的 includes 标签页中修改

${ProjDirPath}/../../../../cocos2dx                         改为 ${COCOS2D_ROOT}/cocos2dx

${ProjDirPath}/../../../../cocos2dx/include           改为 ${COCOS2D_ROOT}/cocos2dx/include

${NDK_ROOT}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86/lib/gcc/arm-linux-androideabi/4.4.3/include

     改为 ${NDK_ROOT}/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.6/include

(如果你是在 32位系统上开发,改为 ${NDK_ROOT}/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/lib/gcc/arm-linux-androideabi/4.6/include)

在项目属性C/C++ General -> Paths and Symbols 的 symbols 标签页中修改

COCOS2DX_ROOT = ${ProjDirPath}/../../../../       改为     COCOS2DX_ROOT = ${COCOS2DX_ROO$}

注意:Assembly,GNU C,GNU C++ 如果存在都要做同样修改

2.4 编译报错处理

2.4.1    __android_log_print(ANDROID_LOG_DEBUG, "cocos2d-x debug info", buf);

  /home/yourrname/cocos2d-x-2.1.4/Cocos2dx/platform/android/CCCommon.cpp:48:77: error: format not a string literal and no format arguments [-Werror=format-security]

  改为   __android_log_print(ANDROID_LOG_DEBUG, "cocos2d-x debug info", "%s", buf);

 编译器越来越不人性了,非要有个格式字串不行。类似这个报错还有好几处,改法都一样。

 

2.5  运行时错误

2.5.1  配置文件configs/config-example.plist 缺失

08-29 17:13:58.215: D/(759): HostConnection::get() New Host Connection established 0x2a112d08, tid 759
08-29 17:13:58.366: D/cocos2d-x debug info(759): Get data from file(configs/config-example.plist) failed!
08-29 17:13:58.386: D/cocos2d-x debug info(759): Assert failed: Invalid parameter!
08-29 17:13:58.386: E/cocos2d-x assert(759): /home/yourname/cocos2d-x-2.1.4/cocos2dx/support/data_support/ccCArray.cpp function:ccArrayAppendObject line:122

将 assets资源 /home/yourname/cocos2d-x-2.1.4/samples/Cpp/TestCpp/Resources/configs 复制到 HelloCpp/assets;

成功后模拟器画面

3. 导入例程TestCpp

  TestCpp是更有意思的一个例程,通过它我们可以进入Cocos2dx的世界。大致过程和 HelloCpp相同。Resource目录内容复制到assets后要把 Images文件夹下的 .gz 全删除,否则编译资源报告重名错误。

 

成功后模拟器画面




 

 

【转载请注明来自blog.csdn.net/tonyfield 谢谢 2013.08.29 】

 

posted on 2013-08-29 20:19  you Richer  阅读(430)  评论(0编辑  收藏  举报