eclipse開發cocos2dx 3.2環境搭建之二: cocos2dx 3.2安裝及測試運行 (An internal error occurred during: "C/C++ Indexe)

文章摘自:http://blog.csdn.net/chzphoenix/article/details/38705209


上一節配置好了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版本!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章