eclipse开发cocos2dx 3.2环境搭建之二: cocos2dx 3.2安装及测试运行 (An internal error occurred during: "C/C++ Indexe)

来源:互联网 发布:遗传算法编程 编辑:程序博客网 时间:2024/05/22 17:05

上一节配置好了NDK环境,现在主要说说如何在此基础上搭建cocos2dx 3.2.

之所以要写着俩篇博文,主要是因为很多书本包括网上大部分都是cocos2dx 2.x版本的,在环境配置等方面与3.2版本就很大的不同,如果按照2.x版本去配置会出现很多问题和麻烦。cocos2dx 3.2版本的环境配置网上也有一些,不过有些并不是很准确,另外3.2版本本身有一些问题,网上很多并没有提到。这俩篇博文是大量参照网上写到比较全面的博文,并结合自己的环境和问题总结的。


先强调一下,大家一定要先阅读一遍cocos2dx安装目录下的readme!!关于cocos2dx的安装和测试里面其实说的很详细了,这样就可以少走些弯路。

下面开始进入正题。再次强调ndk一定要使用r9d版本!需要准备如下:

1、ant  这个比较简单,官网上下载安装后配置环境变量即可。

2、python 建议使用2.7版本,据说高版本会有问题。

3、cocos2dx 3.2


第一步:

安装ant及python。

ant安装很简单,安装后配置环境变量即可,注意添加的是“ant目录\bin”。python其实也一样,不过python在安装过程中可以注意一下,在其中一个界面最后一个选项就是环境变量,默认是不选的,选择后继续安装就不需要手动去配置了。


第二步:

安装cocos2dx 3.2。

官网上下载好后解压缩,命令行运行其下的setup.py。过程中分别需要配置androidsdk、ndk、ant的目录,其中ant是其根目录下的bin。配置有错误就会提示,需要重新来一遍,不过前面配置成功了就不会再提示配置了。

安装好后打开cmd输入cocos,如果显示帮助信息而非“cocos不是内部命令”这样的,那么就说明安装成功了。

这部分还有一个问题,我发现setup.py安装后会将androidsdk、ndk、ant自己配置到用户环境中,并且在用户环境path中添加了cocos2dx的bin目录。正常来说命令行下输入就可以正常显示,但是我电脑还是无法正常显示,具体原因不明,最后只好手动把cocos2dx的bin目录添加至系统变量的Path中。


第三步:

新建cocos2dx 3.2测试项目。

这部分与2.x版本有一些不同。

运行命令(使用cmd等)  cocos new 项目名 -p 包名 -l 语言(只有cpp,lua,js可选) -d 工程目录

例如:cocos new mygame -p com.your_company.mygame -l cpp -d e:\mygame\     这个命令就是在e:\mygame\创建mygame 项目,项目的包名为com.your_company.mygame

等一会就可以看到生成的工程文件了,在总目录下有proj.android,这个就是android的项目文件(其实这个项目是在cocos2dx安装目录下的\templates\cpp-template-default\下,只是拷贝过去并改了包名项目名等)。另外在总目录下还有俩个目录需要说一下,一个是cocos2d(对应cocos2dx安装目录下的cocos文件夹),其下的\platform\android\java需要以“source”的方式引用到项目中,不过项目本身已经引用了,但是会有个小问题,以后再说;另外一个是Resources,顾名思义里面是项目的资源文件,如果发现项目中缺少资源文件,可以将这个目录下的文件拷贝到项目的assets下。


第四步:

eclipse导入项目。

打开eclipse,在新建项目时选择“File->New->Other->Android/Android Project from Existing Code”,选择上步提到的proj.android将项目导入eclipse。

这时就会出现错误,这是3.2版本本身的一个小问题。

右键->Build Path->Config Build Path,在source下可以看到libcocos2d的路径是错误的,中间多了一个“2d”。这个就是我们上步提到过的,将其改回正确路径问题就会消失。


第五步:

编译运行项目。

第一章提到需要自己配置一个ndk的builder,这样就可以自动进行编译。cocos2dx的这个测试项目并不需要,打开它的builders就会发现里面已经有了一个“cdt builder”。Run As->Android Application,打包之前会自动进行编译,注意看日志实际上是运行了一条“python xxxx/CocoTest/proj.android/build_native.py -b release all ”命令,编译后会在libs下自动创建so文件,然后会自动打包安装。在手机上就可以看到cocos2dx的运行了!



cocos2dx终于成功搭建好了,途中因为网上的各种误导遇到了很多问题,花费了不少时间,所以自己想简单总结一下。其实最主要的文件就是NDK版本问题,ndk的版本一定要是r9d版本!低的版本会不支持c++11,我试过的包括r8、r9及网上别人试过的r9b都不行。另外网上也有人说r10也不行,反正尽量使用r9d版本。否则会出现很多问题,下面要重点说一下因为版本导致出现的一些问题。

1、低版本ndk无法编译。

最开始使用的是低版本,运行之后程序直接崩溃,日志显示java.lang.IllegalArgumentException: Unable to find 
native library: libcocos2dcpp错误。其实就是没有编译,libs下没有产生so文件。

网上有很多人建议手动编译,就是在项目目录下运行build_native.py,其实根本不管用。因为项目运行时会自动编译,根本没必要手动编译。但是手动编译就会看到问题所在,提示Android NDK: Invalid APP_STL value: c++_static,就是ndk版本低的原因。

关于这个其实网上有俩种解决方式,一种就是换成r9d版本的ndk;一种是修改Application.mk,不使用c++_static。个人建议直接换新版本。


2、存在已导入的项目,低版本ndk升级

在ndk r9版本的环境下导入cocos2dx的测试项目无法编译,于是自己下载了r9d版本,替换了之后打开eclipse就报出问题了。

问题是An internal error occurred during: "C/C++ Indexer". java.lang.NullPointerExcption,然后发现elipse该项目下就看不到任何文件。网上一搜竟然没看到有这样的问题。净遇上这种奇葩事,关闭"C/C++ Indexer"也不行,试了好久都解决不了。

后来觉得可能是项目的问题,于是自己新建了一个项目,简单的实现ndk里的hellojni,运行正常!

那一定是cocos2dx的测试项目有问题,本身应该没问题,应该是用低版本的ndk导入并运行过,现在直接换高版本可能导致的。将测试项目删除,重新用cocos命令生成一个,再导入解决引用bug。没有任何问题了,编译运行,一切正常!


就像我多次强调,总之cocos2dx 3.2一定要使用ndk r9d版本!

0 0
原创粉丝点击