cocos2dx安装、配置、移植总结

工作准备:

1.eclipse

2.ADT

3.NDK

4.cocos2dx sdk

5.cygwin(windows平台下使用)


十分注意的事情:以上所有的工具,存放路径都不能有空格!!!!!!很多失败的原因是这个引起的。

主要原因是因为Cygwin的问题。不能处理好带空格的路径



首先,编译cocos2dx。这里有两种方式编译,一种是执行cocos2d-2.1rc0-x-2.1.2目录下的build-win32.bat,一种是打开cocos2d-win32.vc2012.sln编译。第一种方法编译失败的话,不好找出失败的原因。第二种方法编译,错误了可以找出原因。编译好后,可以打开install-templates-msvc.bat文件安装VS模板。

安装cygwin,最好安装离线版的,网络版的好难装。。。


windows部份:

编译好后,进入Cygwin的安装目录,在home/用户名/      目录下(用户名是指系统登陆时的用户名),修改.bash_profile文件,在文件末尾加入

#ndk-root  
NDK_ROOT=/cygdrive/e/tools/android-ndk-r8e-win
export NDK_ROOT

保存后,执行cygwin.exe 文件(注意不是cygwin.bat,这个文件不会加载.bash_profile的文件配置),输入echo $NDK_ROOT测试。


cocos2dx编译好后,配置IDE的包含目录和库目录。例如在,用Visual studio创建一个cocos2dx工程,然后就会提示有些头文件找不到目录。这时需要根据头文件名去cocos2d-2.1rc0-x-2.1.2\cocos2dx;目录下去找出文件。然后,不得不吐槽了,不知道是不是因为用 VS 编译的原因,编译完后,头文件到处都是,显得十分凌乱。。。只能根据cocos2dx模板建出来的工程去猜头文件的位置,然后我就把找出来的头文件,按照在工程#include "XXX/XXX,h"的格式,组织相对目录 ,全部复制到\cocos2d-2.1rc0-x-2.1.2\cocos2dx\include下。

用build-win32.bat编译一直编译不过,看出错信息因为控制台的原因,看不完整,找不到哪里错了。

嗯,头文件这个比较难解决,有谁知道头文件的目录摆放位置,谢谢您告诉我!


进入cocos2dx的目录下,修改create-android-project.bat文件,用文本编辑器打开(用记事本打开可能会无法正确显示换行,可以用notepad++等工具打开),找到set _CYGBIN= 、set _ANDROIDTOOLS=、set _NDKROOT=这三个字段。这三个后面分别接cygwin安装目录下的bin、android sdk目录下的tools、NDK的绝对路径,再次强调,路径不能有空格。修改好后保存文件。


用VS写好cocos2dx工程后,移植到Android:

首先,执行cocos2d目录下的create-android-project.bat文件,根据提示,依次输入工程的包路径、应用程序名、选择平台(android 2.1、2.2、2.3、4.0等等,根据打印出来的编号选择)输入完后,会在cocos2dx目录下新建一个目录,目录名为应用程序名,里机有三个目录Classes、proj.android、Resources三个目录,如果只有proj.android目录,就是在create-android-project.bat文件中的 NDK或者Android SDK的路径有问题(路径不能有空格)。创建好后,把VS工程目录下的Classes、Resources分别复制到Classes、Resources目录下,有覆盖提示就覆盖。去到proj.android / jni目录下,有个Android.mk文件,编辑它(怎么编辑就不讲了,网上有很教程,文件内的设置的文件、库等路径不能有空格 )。在jni目录下,有个hellocpp目录,里有个main.cpp文件。用它代替VS工程目录的main.cpp,并把它加入到Android.mk中设置需要编译文件的列表中。

打开cygwin,切换到创建后的proj.android目录,输入./build_native.sh命令,开始编译了。


编译好后,用Eclipse打开该proj.android目录里的工程。

这里还有个问题!!

lib文件必须以lib开头,必须放在\obj\local\armeabi目录下(一般来说,上一步正确编译后,自动会把lib文件放在正确的位置),在加载库文件时,注意loadLibrary与load函数加载的区别:用loadLibrary调用的时候需要去掉lib前缀,例如有个libtestNDK.so文件,只要System.loadLibrary("testNDK");用load调用的时候需要写全路径名 且不能去掉lib前缀;


至此,这就是我所遇到的问题。









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值