昨天尝试了cocos2dx在win下的开发环境配置,并且运行了cocos的helloword程序,晚上想要尝试一下android开发环境配置,顺便学习cocos在eclipse下的JNI机制,按照cocoa中文论坛的android环境配置弄了NDK,并配置了环境变量,由于想要学习cocos的luabind机制(这个我们公司游戏的引擎用的很多,确实比较有兴趣),一切搞定不明就里的用eclipse导入了cocos3.0rc中的tests目录下的cpp-tests工程(这算android开发久了的毛病么。。。),eclipse编译有错误,很快解决掉链接cocos库的问题,导入cocos/2d/platform/android/java的库文件就好,可是还有个jni下的main.cpp文件各种红色的error,显示cocos的库函数没法解析,网上找了很久,发现以前版本会在eclipse工程中配置eclipse的builder中配置ndk_builder的编译器,配置NDK的编译命令行NDK_PATH dk-build.cmd和环境变量NDK_MODULE_PATH,其中NDK_MODULE_PATH中,不仅要配置cocos的路径还有一个android平台的预编译命令prebuilt,问题是我在3.0版本下全局搜索也没有找到这个prebuilt命令,想必是最新版本已经舍弃掉这个NDK_MODULE_PATH的编译方式了,可是问题就来了,因为这样,eclipse编译无法通过,老是提示android.mk的某一行出错,晚上弄到2点多,没有解决只好作罢,今天来公司之后继续弄,期间各种怀疑NDK安装配置问题乱鼓捣(这里吐槽一下eclipse相关的ADT、CDT、NDK之类的,全部是免安装配环境变量,安装完之后也没有jdk命令行来验证是否安装成功,只能按照安装步骤查是否完全一致。。。。)无果,后来想到不用eclipse编译,而改用新版的python命令行方式编译,在cpp-tests的pro.android目录下运行
python build_native.py
(build_native.py是从cocos目录下找的,原android目录中没有),报错找不到ndk_root,发现ndk路径最后多了分号,改之,错误变成找不到cpp-tests的xxx,至此我开始怀疑cpp-tests工程不完整,不是直接能运行的android工程,需要拷贝资源或库之类的,在论坛百度找了好久,没有关于cocos3.0的tests工程的介绍的,大家都是安装配置+helloworld的节奏,想去官网碰碰运气,这回发现果然啊,原来官网wiki中是有这一块介绍的!http://www.cocos2d-x.org/wiki/How_to_Build_an_Android_Project_with_Eclipse,原来cpp-tests的编译命令是在build目录下执行
python android-build.py -p 10 cpp-tests
顺利编译通过!编译之后在原android工程的lib目录下就生成了我们的c++的链接库同时将资源文件也同步到android工程下
此处还要注意的是cocos的动态链接库不能导入cocos目录下而必须是android工程的同级目录(否则会出现链接库函数在android中无法解析的问题),后续的步骤不用多说,真机运行图如图所示:
总结:经过此次发现查找资料的时候我们往往容易忽略最好的地方-----官网,这个问题解决的过程我通过baidu,论坛,贴吧找了好久,各种信息轰炸过来也不知道对错就一一试过,尤其是cocos2dx3.0与2.0版本差异之大,网上很多方法都是之前版本的方式,不明就里依葫芦画瓢不解决问题反而容易引入新问题,所以遇到问题的时候,我们首先应该尝试自己解决问题,解决不了也应该首先去官网看看,因为官位肯定会维护他的最新版本,各种问题大概都会找到个七七八八,切忌病急乱投医