最新版本的会在项目里自动生成proj.android文件夹,里面有个README.md,看那个就可以了。
以下是cocos2d-2.0-x-2.0.4的
win32导成android大致流程:
一、准备步骤:
0、需要cygwin,android sdk, android ndk。安装路径无中文无空格。
1、cygwin/home/Administrator下的.bashrc_profile最后加上ndk的地址,大致如下:
#set Android Home #use R9 version NDK_ROOT=D:/ProgramFiles/android-ndk-r9 export NDK_ROOT export PATH=${PATH}:${NDK_ROOT}
3、cocos2d-x主目录下的create-android-project.bat打开,把里面的cygwin、sdk、ndk路径设好。
set _CYGBIN=D:\ProgramFiles\cygwin\bin set _ANDROIDTOOLS=D:\ProgramFiles\adt-bundle-windows-x86_64-20130729\sdk\tools set _NDKROOT=D:\ProgramFiles\android-ndk-r9
二、开搞
0、假设用vs做的那个win32项目位置是XXX/,下面会有classes、resources、proj.win32这么几个文件夹;
1、cocos2d-x目录下用create-android-project.bat随便生成一个项目;
2、将步骤2生成项目里的proj.android复制到XXX/下;
3、将cocos2d-x下的cocos2dx、CocosDenshion、extensions复制到项目里,地址可以随便,在XXX/proj.android/build_native.sh里把COCOS2DX_ROOT设好你放的位置就行了。
4、把项目所需的所有cpp地址都写到XXX/proj.android/jni/Android.mk里的LOCAL_SRC_FILES 后面,就差不多下面这样:
LOCAL_SRC_FILES := hellocpp/main.cpp \ ../../Classes/AppDelegate.cpp \ ../../Classes/HelloWorldScene.cpp \ ../../Classes/AboutGame.cpp \ ../../Classes/BaseScene.cpp \ ../../Classes/CCChessman.cpp \ ../../Classes/EnterGame.cpp \
5、打开cygwin,到XXX/proj.andoid目录下,运行build_native.sh,会自动编译。对了,装cygwin的时候不要忘了装make,devel->make。
6、打开eclipse,新建->project->Android Project forom Existing Code,找到XXX/proj.android导进来,会有两个project,其中一个是libcocos2dx。在另一个里导入libcocos2dx.jar(其实这步我记不清了),然后就可以运行了。
小问题集锦(不断遇到中):
cygwin编译时报错: format not a string literal and no format arguments
原因:g++版本在4以上,有点严格了,要求字符串必须是格式化的
解决方法:按照出错信息打开相应的cpp,在__android_log_print函数的最后一个参数前加上"%s"。比如:
__android_log_print(ANDROID_LOG_DEBUG, "cocos2d-x debug info", buf);
改成=>
__android_log_print(ANDROID_LOG_DEBUG, "cocos2d-x debug info", "%s", buf);
有些文件一般头里会有个宏定义#define LOGD(...) __android_log_print 什么什么的,那直接改这个就行了,比如:
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,"SIMPLEAUDIOENGINE_OPENSL", __VA_ARGS__)
改成=>
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,"SIMPLEAUDIOENGINE_OPENSL","%s", __VA_ARGS__)
要改的文件有:
CocosDenshion\android\SimpleAudioEngine.cpp
CocosDenshion\android\opensl\OpenSLEngine.cpp
CocosDenshion\android\opensl\SimpleAudioEngineOpenSL.cpp
cocos2dx\platform\android\CCCommon.cpp
cocos2dx\platform\CCPlatformMacros.h (最新版本要改这个,查找到"CCLOG"那一块,在那些函数的最后项参数前(似乎都是##带头的)加上"%s",})
安卓虚拟机运行时提示emulator-arm.exe已停止工作:
原因:显卡支持性的关系。
解决方法:将虚拟机的hardware属性里的GPU-emulation改成yes。有的版本是在虚拟机的emulation Options里把Use host GPU打钩。
虚拟机上程序无法打开:
原因:不清楚,听说是模拟器不支持gles2.0。
解决方法:暂无解,只能去搞甄姬真机。