eclipse开发cocos2dx 3.2环境搭建之二: cocos2dx 3.2安装及测试运行 (An internal error occurred during: “C/C++ Indexe)
上一節(jié)配置好了NDK環(huán)境,現(xiàn)在主要說說如何在此基礎(chǔ)上搭建cocos2dx 3.2.
之所以要寫著倆篇博文,主要是因?yàn)楹芏鄷景ňW(wǎng)上大部分都是cocos2dx 2.x版本的,在環(huán)境配置等方面與3.2版本就很大的不同,如果按照2.x版本去配置會(huì)出現(xiàn)很多問題和麻煩。cocos2dx 3.2版本的環(huán)境配置網(wǎng)上也有一些,不過有些并不是很準(zhǔn)確,另外3.2版本本身有一些問題,網(wǎng)上很多并沒有提到。這倆篇博文是大量參照網(wǎng)上寫到比較全面的博文,并結(jié)合自己的環(huán)境和問題總結(jié)的。
先強(qiáng)調(diào)一下,大家一定要先閱讀一遍cocos2dx安裝目錄下的readme!!關(guān)于cocos2dx的安裝和測試?yán)锩嫫鋵?shí)說的很詳細(xì)了,這樣就可以少走些彎路。
下面開始進(jìn)入正題。再次強(qiáng)調(diào)ndk一定要使用r9d版本!需要準(zhǔn)備如下:
1、ant ?這個(gè)比較簡單,官網(wǎng)上下載安裝后配置環(huán)境變量即可。
2、python 建議使用2.7版本,據(jù)說高版本會(huì)有問題。
3、cocos2dx 3.2
第一步:
安裝ant及python。
ant安裝很簡單,安裝后配置環(huán)境變量即可,注意添加的是“ant目錄\bin”。python其實(shí)也一樣,不過python在安裝過程中可以注意一下,在其中一個(gè)界面最后一個(gè)選項(xiàng)就是環(huán)境變量,默認(rèn)是不選的,選擇后繼續(xù)安裝就不需要手動(dòng)去配置了。
第二步:
安裝cocos2dx 3.2。
官網(wǎng)上下載好后解壓縮,命令行運(yùn)行其下的setup.py。過程中分別需要配置androidsdk、ndk、ant的目錄,其中ant是其根目錄下的bin。配置有錯(cuò)誤就會(huì)提示,需要重新來一遍,不過前面配置成功了就不會(huì)再提示配置了。
安裝好后打開cmd輸入cocos,如果顯示幫助信息而非“cocos不是內(nèi)部命令”這樣的,那么就說明安裝成功了。
這部分還有一個(gè)問題,我發(fā)現(xiàn)setup.py安裝后會(huì)將androidsdk、ndk、ant自己配置到用戶環(huán)境中,并且在用戶環(huán)境path中添加了cocos2dx的bin目錄。正常來說命令行下輸入就可以正常顯示,但是我電腦還是無法正常顯示,具體原因不明,最后只好手動(dòng)把cocos2dx的bin目錄添加至系統(tǒng)變量的Path中。
第三步:
新建cocos2dx 3.2測試項(xiàng)目。
這部分與2.x版本有一些不同。
運(yùn)行命令(使用cmd等) ?cocos new 項(xiàng)目名 -p?包名 -l?語言(只有cpp,lua,js可選) -d 工程目錄
例如:cocos new mygame -p com.your_company.mygame -l cpp -d e:\mygame\ ? ? 這個(gè)命令就是在e:\mygame\創(chuàng)建mygame 項(xiàng)目,項(xiàng)目的包名為com.your_company.mygame
等一會(huì)就可以看到生成的工程文件了,在總目錄下有proj.android,這個(gè)就是android的項(xiàng)目文件(其實(shí)這個(gè)項(xiàng)目是在cocos2dx安裝目錄下的\templates\cpp-template-default\下,只是拷貝過去并改了包名項(xiàng)目名等)。另外在總目錄下還有倆個(gè)目錄需要說一下,一個(gè)是cocos2d(對(duì)應(yīng)cocos2dx安裝目錄下的cocos文件夾),其下的\platform\android\java需要以“source”的方式引用到項(xiàng)目中,不過項(xiàng)目本身已經(jīng)引用了,但是會(huì)有個(gè)小問題,以后再說;另外一個(gè)是Resources,顧名思義里面是項(xiàng)目的資源文件,如果發(fā)現(xiàn)項(xiàng)目中缺少資源文件,可以將這個(gè)目錄下的文件拷貝到項(xiàng)目的assets下。
第四步:
eclipse導(dǎo)入項(xiàng)目。
打開eclipse,在新建項(xiàng)目時(shí)選擇“File->New->Other->Android/Android Project from Existing Code”,選擇上步提到的proj.android將項(xiàng)目導(dǎo)入eclipse。
這時(shí)就會(huì)出現(xiàn)錯(cuò)誤,這是3.2版本本身的一個(gè)小問題。
右鍵->Build Path->Config Build Path,在source下可以看到libcocos2d的路徑是錯(cuò)誤的,中間多了一個(gè)“2d”。這個(gè)就是我們上步提到過的,將其改回正確路徑問題就會(huì)消失。
第五步:
編譯運(yùn)行項(xiàng)目。
第一章提到需要自己配置一個(gè)ndk的builder,這樣就可以自動(dòng)進(jìn)行編譯。cocos2dx的這個(gè)測試項(xiàng)目并不需要,打開它的builders就會(huì)發(fā)現(xiàn)里面已經(jīng)有了一個(gè)“cdt builder”。Run As->Android Application,打包之前會(huì)自動(dòng)進(jìn)行編譯,注意看日志實(shí)際上是運(yùn)行了一條“python xxxx/CocoTest/proj.android/build_native.py -b release all?”命令,編譯后會(huì)在libs下自動(dòng)創(chuàng)建so文件,然后會(huì)自動(dòng)打包安裝。在手機(jī)上就可以看到cocos2dx的運(yùn)行了!
cocos2dx終于成功搭建好了,途中因?yàn)榫W(wǎng)上的各種誤導(dǎo)遇到了很多問題,花費(fèi)了不少時(shí)間,所以自己想簡單總結(jié)一下。其實(shí)最主要的文件就是NDK版本問題,ndk的版本一定要是r9d版本!低的版本會(huì)不支持c++11,我試過的包括r8、r9及網(wǎng)上別人試過的r9b都不行。另外網(wǎng)上也有人說r10也不行,反正盡量使用r9d版本。否則會(huì)出現(xiàn)很多問題,下面要重點(diǎn)說一下因?yàn)榘姹緦?dǎo)致出現(xiàn)的一些問題。
1、低版本ndk無法編譯。
最開始使用的是低版本,運(yùn)行之后程序直接崩潰,日志顯示java.lang.IllegalArgumentException: Unable to find?
native library: libcocos2dcpp錯(cuò)誤。其實(shí)就是沒有編譯,libs下沒有產(chǎn)生so文件。
網(wǎng)上有很多人建議手動(dòng)編譯,就是在項(xiàng)目目錄下運(yùn)行build_native.py,其實(shí)根本不管用。因?yàn)轫?xiàng)目運(yùn)行時(shí)會(huì)自動(dòng)編譯,根本沒必要手動(dòng)編譯。但是手動(dòng)編譯就會(huì)看到問題所在,提示Android NDK: Invalid APP_STL value: c++_static,就是ndk版本低的原因。
關(guān)于這個(gè)其實(shí)網(wǎng)上有倆種解決方式,一種就是換成r9d版本的ndk;一種是修改Application.mk,不使用c++_static。個(gè)人建議直接換新版本。
2、存在已導(dǎo)入的項(xiàng)目,低版本ndk升級(jí)
在ndk r9版本的環(huán)境下導(dǎo)入cocos2dx的測試項(xiàng)目無法編譯,于是自己下載了r9d版本,替換了之后打開eclipse就報(bào)出問題了。
問題是An internal error occurred during: "C/C++ Indexer". java.lang.NullPointerExcption,然后發(fā)現(xiàn)elipse該項(xiàng)目下就看不到任何文件。網(wǎng)上一搜竟然沒看到有這樣的問題。凈遇上這種奇葩事,關(guān)閉"C/C++ Indexer"也不行,試了好久都解決不了。
后來覺得可能是項(xiàng)目的問題,于是自己新建了一個(gè)項(xiàng)目,簡單的實(shí)現(xiàn)ndk里的hellojni,運(yùn)行正常!
那一定是cocos2dx的測試項(xiàng)目有問題,本身應(yīng)該沒問題,應(yīng)該是用低版本的ndk導(dǎo)入并運(yùn)行過,現(xiàn)在直接換高版本可能導(dǎo)致的。將測試項(xiàng)目刪除,重新用cocos命令生成一個(gè),再導(dǎo)入解決引用bug。沒有任何問題了,編譯運(yùn)行,一切正常!
就像我多次強(qiáng)調(diào),總之cocos2dx 3.2一定要使用ndk r9d版本!
?
總結(jié)
以上是生活随笔為你收集整理的eclipse开发cocos2dx 3.2环境搭建之二: cocos2dx 3.2安装及测试运行 (An internal error occurred during: “C/C++ Indexe)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: eclipse开发cocos2dx 3.
- 下一篇: eclipse开发cocos2dx 3.