[转]cocos2dx-android开发环境搭建
1.下载NDK并解压到一个目录下,如:G:\work\android-ndk-r8b
2.安装cygwin(1.7版本以上)
选择安装内容的时候,选择Devel(点击列表中Devel,将后面的Default改为Install),其余默认即可
3.配置cygwin
在命令行中进入cygwin目录,并执行cygwin.bat,如果你不是用Administrator账号登录的系统,那么会在cygwin\home\文件夹中生成一个以你的登录名命名的新的文件夹。
修改新生成文件夹中的“.bash_profile ”文件,用UE或editplus等文本编辑器打开,在最后增加:
NDK_ROOT=/cygdrive/G/work/android-ndk-r8b
export NDK_ROOT
然后保存关闭。
4.用UE打开cocos2dx安装目录下的create-android-project.bat,修改
- set _CYGBIN=C:\cygwin\bin
The path of cygwin bin - set _ANDROIDTOOLS=D:\anroid\android-sdk-windows\tools
The path of android sdk tools - set _NDKROOT=D:\anroid\android-ndk-r5b
The root of ndk
5.运行create-android-project.bat,输入包名和程序名,选择sdk版本(如果看不到编号,使用类似android-XX这种形式代表版本号,如android-8代表2.2)最后自动生成工程文件夹,如果之前已经在其他平台建立了工程,则把工程文件夹下的proj.android整个目录拷贝到之前的工程文件夹下即可
很多人在跨平台编译的时候会出现下面的问题,尤其是在Cygwin中编译的时候:
syntax error near unexpected token '$'\r''
这种情况的产生是因为unix中的'\r'跟Windows中的'\r'不兼容。
这时候需要做的很简单:
在Cygwin目录中,Home目录下,有个以当前用户为名字的文件的文件夹,里面有个.bash_profile
如果没有,直接手动创建一个就好。
在最后面加上下面的两句话:
export SHELLOPTS
set -o igncr
重新启动Cygwin,OK问题解决了。
第二种解决方法是:
在 系统 环境变量里面添加一项,
SHELLOPTS 值设置为 igncr
保存,重启Cygwin,
问题解决了。
如果自建工程不在cocos2d-x根目录下,则需要更改生成的proj.android下的build_native.sh
把:
COCOS2DX_ROOT="$DIR/../.."
路径改成cocos2d-x的根目录,比如:
COCOS2DX_ROOT="/cygdrive/c/work/cocos2d-x"
6.打开cygwin32.bat,进入刚才建立的工程文件夹的proj.android目录,命令类似于:
cd /cygdrive/G/work/myapp/cocosworkprj/cocos2d-2.0-x-2.0.3/test/proj.android
运行build_native.sh:
./build_native.sh
执行完成后会在proj.android\libs\armeabi目录下生成需要的.so文件
7.以上建立的工程是默认设置的,不支持Box2D,CocosDenshion等其他库,如果需要支持其他库,参考samples\TestCpp\proj.android\jni下的Android.mk和Application.mk,把这两个文件替换自己工程proj.android\jni目录下的同名文件,把:
LOCAL_SRC_FILES := testcpp/main.cpp
这一句改成类似以下(列举出所有需要编译的cpp文件):
LOCAL_SRC_FILES := hellocpp/main.cpp \
http://www.cnblogs.com/Classes/AppDelegate.cpp \
http://www.cnblogs.com/Classes/HelloWorldScene.cpp
因为create-android-project.bat建立的工程中,android下的main.cpp在jin\hellocpp目录下
LOCAL_MODULE_FILENAME := libtestcpp 这一句是设置最终输出的so文件的名字,也可以自由更改
$(call import-module,samples/TestCpp) 这句删除
8.在eclipse里右键新建一个project,选择android下的android project from existing code,选择刚才建立工程的proj.android目录
9.拷贝cocos2dx安装目录的cocos2dx\platform\android\java\src\org\cocos2dx\lib文件夹下的所有文件到自己工程的proj.android\src\org\cocos2dx\lib目录下
10.找到主activity中的:
static {
System.loadLibrary("game");
}
把load的库名改成生成的so文件的名字,即LOCAL_MODULE_FILENAME := libtestcpp这句指定的名字去掉前面的lib前缀,比如LOCAL_MODULE_FILENAME指定的名字是libtestcpp
则改为:
static {
System.loadLibrary("testcpp");
}
11.在eclipse中运行程序