Windows cocos3.8+,android移植

0,相关的包
截图如下

1,android环境搭建
google官网不直接配置eclipse+sdk的开发套件。直接用以前的压缩包好了。
android-studio还不会,只会用android-studio打包。
ANDROID_SDK_ROOT
2,java环境变量的配置
版本1.7或者以上
这个就不用多说了
JAVA_HOME
3,python搭建
2.7x版本能用,3.4会报错
4,NDK环境变量的配置
版本r9d或以上
NDK_ROOT
5,ANT环境变量的配置
版本1.9.4
ANT_ROOT
6,已有工程
python脚本生成工程
或者已经在win32下面编好的工程
7,3.x版本android移植
(1)导入工程
(2)修改jni下android.mk文件
#LOCAL_SRC_FILES := hellocpp/main.cpp
…/…/Classes/AppDelegate.cpp \

遍历目录及子目录的函数

define walk
(wildcard (1)) (foreach e, (wildcard (1)/*), (call walk, $(e)))
endef

遍历Classes目录

ALLFILES = (call walk, (LOCAL_PATH)/…/…/Classes)
FILE_LIST := hellocpp/main.cpp

从所有文件中提取出所有.cpp文件

FILE_LIST += (filter %.cpp, (ALLFILES))
LOCAL_SRC_FILES := (FILE_LIST:(LOCAL_PATH)/=)
LOCAL_C_INCLUDES := $(LOCAL_PATH)/…/…/Classes
加入这个脚本,可以不用手动修改这个文件了。
(3)勾选CDT编译
勾了这个,eclipse使用build_native.py编译工程,这个非常重要
截图如下

run,build都行。
(4)工程结构
截图如下

8,移植过程遇到的问题(冲突)
(1)random()
2d模块和3d模块的冲突
random()替换成cocos2d::random(0, RAND_MAX)
(2)log
void CC_DLL log(const char * format, …) CC_FORMAT_PRINTF(1, 2);
std::string temp=“kdjfkllksdjf”;
不能直接写成log(temp.c_str());//会报错,说是参数不正确。
要写成
log("%s",temp.c_str());
(3)正则表达式在android上不可用
const std::regex pattern("^\D\w\d]+");//^\\D\\w\\d]+
std::smatch result;
bool match = std::regex_search(str, result, pattern);
return match;
具体原因是这个特性在gcc上还没有实现,可以用boost库上的regex实现。
总之这部分的代码还得重写。

mark一下,楼主加油干!