准备素材:
1.ADT
2.JDK
3.VS2010、2012
4.CygWin
5.cocos2d-x(2.1.5)
6.NDK r8e(r9有个bug所以先不用)
Part 1:配置各种环境变量,推荐个环境变量查看器(RapidEE)
1.JDK的环境变量 JAVA_HOME及Path的添加bin和jre\bin
2.NDK_ROOT
3.COCOS2DX_ROOT
4.ANROID_SDK_HOME 及Path中加入tools和platform-tools
Part2:安装CygWin(补充说明一下NDK r8之后就可以不需要这东东)
1.需要安装的文件有autoconf2.1、automake、binutils、gcc-core、gcc-g++、gdb、pcre、pcre-devel、
gawk、make
2.打开cygwin,进入cygwin的根目录运行一下cygwin.bat文件,修改cygwin\home\username下的.bash_profile。
最后加入ndk的路径,蓝色部分因人而异
ANDROID_NDK_ROOT=/cygdrive/c/NDK
export ANDROID_NDK_ROOT
Part3:创建一个属于自己的cocos2d-x工程
1.使用vs模板 和 create-android-project.bat(2.1.2之后就弃用了,这种方法适合用cygwin编译)
2.使用create_project.py程序创建多平台项目工程(这个很多教程查查,这种方法适合直接用NDK编译)
下面的部分不影响对学习cocos2d-x,只是可以将win平台下写好的程序移植到Android平台上。
Part4:利用cygwin环境编译
1.首先修改proj.android\jni\Android.mk文件,该编译哪些cpp都加进去
2.打开cygwin,指定到工程文件夹下 ./build_native.sh
3.最后生成.so文件就成功了,后面导入eclipse通过模拟器或者真机调试
(模拟器Android2.2 运行黑屏,用4.1.2就没问题了)
Part5:直接利用NDK编译
1.导入工程到eclipse,配置工程属性修改C/C++Build为ndk-build.cmd(改为用这个就跟cygwin说byebye)
2.最让人纠结的一步,总是提示说没有定义NDK_MODULE_PATH,我试过添加windows环境变量,在eclipse工程属性下添加工程环境变量也不行,看第3步。
3.找到android工程下的jni\Android.mk(蓝色部分因人而异)
$(call import-add-path, E:/cocos2d-x-2.1.5)\
$(call import-add-path, E:/cocos2d-x-2.1.5/cocos2dx/platform/third_party/android/prebuilt)\
还有添加要编译的cpp文件,下面的语句可以一次性添加Classes目录下的所有.cpp文件
FILE_LIST := hellocpp/main.cpp
FILE_LIST += $(wildcard $(LOCAL_PATH)/../../Classes/*.cpp)
LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)
4.没看到NDK编译工程的,右键工程Close Project再打开就可以了,最后生成.so完成。
(模拟器我还是选4.1.2的,运行成功)
总结:
尽量选用NDK直接编译,这是以后更常用的做法,如果操场系统不是Windows的那也没什么所谓,cywin主要是模拟一个unix环境,移植win平台写好的cpp代码到android最重要的还是修改好jni\Android.mk,这一步是最重要的。