將cocos2dx項目工程移植到eclipse中編譯打包APK


下載和安裝python:

python是一種面向對象、解釋型計算機程序設計語言。常見的一種應用情形是,使用Python快速生成程序的原型(有時甚至是程序的最終界面),然後對其中有特別要求的部分,用更合適的語言改寫,比如3D遊戲中的圖形渲染模塊,性能要求特別高,就可以用C++重寫。我對python用的最多的就是對文件的處理和項目流程控制(打包發佈啊),遊戲開發中使用python腳本可以解決很多繁瑣的工作,爲自己項目開發節省很大一部分的時間,誰用誰知道!!!待會你就可以看到,cocos2dx如何用它來創建項目的。
下載地址:https://www.python.org/download/releases/2.7.5/(我們下載2.7.5版本,沒有爲什麼,因爲我用的就是這個版本,3.0以上版本變動很大,一些用法都變了,好像coco2dx安裝腳本不支持3.0以上版本,所以乖乖下載2.7的版本吧----有些時候並不是最新的就是最好的,你懂得)

下載後執行python-2.7.5.msi進行安裝就可以了。不要忘了在安裝完成後配置環境變量哦,做程序開發如果不懂配置環境變量那麼你就慘了.....
(我的這篇文章中有介紹環境變量配置的http://blog.csdn.net/longming_xu/article/details/28241045)

第四步:下載cocos2dx 2.2.2版本

cocos2dx每個版本的變動都很大(如果你想了解各個版本的變化,請自行谷歌),這也是我初學的時候比較蛋疼的地方,有時候就納悶爲什麼cocos2dx不搞一個像unity3D那樣的集成開發環境呢?每個版本的變動,竟然連工程創建方式都不一樣,讓我們情以何堪啊(3.0版本變動據說挺大的來...)!!!在這裏我只介紹2.2.2版本的工程創建,其他版本自行谷歌嘍(因爲這不是本文的主要內容,如果有需要的話,可以考慮後續補充)。
下載地址:http://www.cocos2d-x.org/download/version#Cocos2d-x找到v2.2.2版本(現在都出到v3.1.1了)


OK!到這裏你已經擁有了基本的開發環境(IDE(vs2012+番茄插件)+cocos2dx開發庫),可以進行coco2dx開發了,下面我們就創建一個Helloworld程序吧。

第五步:創建一個Helloworld程序:

1、解壓zip文件

2、解壓後的文件結構是這個樣子的(介紹組織結構的文章,自行谷歌)

3、如何創建一個項目呢?cocos2dx已經爲我們提供了創建項目的工具,他是一個python腳本文件(所以你需要安裝python環境)
①看見上圖紅框tools文件夾了嗎,打開它進入project-creator目錄下,紅框就是項目創建腳本了(你不需要知道他是怎麼實現的--如果你願意的話你可以瞭解下):


②點擊當前目錄空白處,然後按shift+右鍵,選擇-->在此處打開命令行窗口

③打開命令行,然後輸入create_project.py後回車,出現提示嘍,他會告訴你你需要傳遞的參數信息:
-project 是新建項目名稱
-package 是java方式的包結構(這個是爲了android移植而設定的)
-language 是你的項目所使用的開發語言(cpp即c++,lua,javascript三種)


################################################################################################################33
小提示:你可以自己編寫一個bat小腳本命名爲createProject.bat,使用的時候直接運行就可以了(調用了createProject.py)
[plain] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. @echo off  
  2. set /p projectName=請輸入項目名稱:  
  3. if "%projectName%"=="" goto inputError1  
  4. set /p packageName=請輸入包標示名:  
  5. if "%packageName%"=="" goto inputError2  
  6. set /p language=請輸入語言:  
  7. if "%language%"=="" goto inputError3  
  8. create_project.py -project %projectName% -package %packageName% -language %language%  
  9. pause  
  10. exit  
  11. :inputError1  
  12. @echo 項目名稱不能爲空!  
  13. :inputError2  
  14. @echo 包標示名不能爲空!  
  15. :inputError3  
  16. @echo 選擇語言不能爲空!  
  17. pause   



##############################################################################################################

④然後我們按照提示創建我們的新項目,如下圖紅框1內容。執行後如果出現了Done!說明你創建完畢了!紅框2指出了創建項目的位置。

⑤那麼我們進入項目文件夾project中,你會發現剛纔新建的項目helloworld了

⑥進入項目中,其文件組織結構如下圖,這樣一個coco2dx的新項目就完成了。
Classes文件夾中是項目的代碼位置
proj.開頭的文件夾是各個平臺的入口實現方式
Resource文件夾是資源文件位置

⑦讓我們編譯運行一下吧,進入proj.win32中,雙擊helloworld.sln解決方案文件,打開vs2012,執行編譯運行(不用多說了)

⑧看結果吧,噹噹噹當....大功告成!(這樣我們就可以在win32平臺下進行開發了---盡情地蹂躪cocos2dx吧)


到目前爲止,我們已經學會了如何創建cocos2dx項目了,並吧helloworld程序跑起來了,可以進行win32開發了,那麼下一步我們就是要將這個項目交叉編譯到Android上了,下面你就會見識到cocos2dx的跨平臺性了。
這裏插入一點小介紹:
編寫的c++代碼爲什麼能在Android上運行?其實這是使用了java的jniJava Native Interface --java本地調用)技術,jni技術允許Java代碼和其他語言寫的代碼(c/c++)進行交互。
百科:衆所周知,Android的SDK基於Java實現,這意味着基於Android SDK進行開發的第三方應用都必須使用Java語言。但這並不等同於“第三方應用只能使用Java”。在Android SDK首次發佈時,Google就宣稱其虛擬機Dalvik支持JNI編程方式,也就是第三方應用完全可以通過JNI調用自己的C動態庫,即在Android平臺上,“Java+C/C++”的編程方式是可以實現的。(下面將要用的NDK其實就是採用了jni技術,對它簡化了而已)


第六步:下載Cygwin安裝

首先你會問Cygwin是什麼東東對吧,其實他是一個UNIX 模擬環境,它讓你可以在window下運行UNIX 環境,而不需要安裝虛擬機!它對於學習UNIX/Linux操作環境,或者從UNIX到Windows的應用程序移植,或者進行某些特殊的開發工作,尤其是使用GNU工具集在Windows上進行嵌入式系統開發,非常有用。隨着嵌入式系統開發在國內日漸流行,越來越多的開發者對Cygwin產生了興趣。說白了它就是一個小linux系統(模擬的),在Cygwin中你可以使用絕大部分Linux軟件和功能。如Gcc,Make,Vim,Emacs等等。總之如果你想使用某個Linux下的功能,而windows上又找不到好的替代品的話,你就可以用Cygwin。使用的最頻繁的是Gcc和Make。經常會用它們來編譯一些我從網上下載的開源的工程。這些工程在Windows上編譯往往很麻煩。


它的安裝教程我就不寫了,得配好多圖....
我就先“盜用”別人的鏈接了供大家參考一下:

注意:安裝組件過程中,必須安裝的GUN MAKE組件,需要用來編譯c/c++文件。對linux不熟悉的話直接全部安裝Devel目錄下的所有組件即可。也可以下載平臺的組件包到本地,從本地安裝,具體看你選擇哪種方式了。安裝完成,打開會出現一個linux shell的命令行窗口,測試GNU MAKE版本:make -v ,窗口顯示gnu make 版本號即表示安裝成功,然後你就可以模擬linux操作了。 

那麼爲什麼要安裝它呢?這就與下面我們安裝的NDK(Native Development Kit 本地開發工具包)有關係了!!由於NDK(注意:NDK r7版本和之後版本自帶了一個編譯器,就不需要Cygwin了)編譯代碼時必須要用到make和gcc,所以你必須先搭建一個linux環境, cygwin是一個在windows平臺上運行的unix模擬環境,通過它,你就可以在不安裝linux的情況下使用NDK來編譯C、C++代碼了。



第七步:下載NDK並安裝

那麼什麼事NDK呢?NDK全稱Native Development Kit 本地開發包。
百科:
NDK是一系列工具的集合------
①NDK提供了一系列的工具,幫助開發者快速開發C(或C++)的動態庫,並能自動將so和java應用一起打包成apk。這些工具對開發者的幫助是巨大的。
②NDK集成了交叉編譯器,並提供了相應的mk文件隔離CPU、平臺、ABI等差異,開發人員只需要簡單修改mk文件(指出“哪些文件需要編譯”、“編譯特性要求”等),就可以創建出so。
③NDK可以自動地將so和Java應用一起打包,極大地減輕了開發人員的打包工作。

如果你下載的是NDK r7之前的版本,那麼你會發現都會提到Cygwin下載(以提供make 和 gcc的MinGNU環境)。NDK r7和之後的版本都自帶了編譯器,就不需要下載Cygwin了。(這裏我不管是哪個版本,都用Cygwin去做交叉編譯,就當做是學習Cygwin了,後面會介紹直接使用NDK r7自帶的編譯器,不使用Cygwin)

下載地址:



1、下載完成後獲得一個壓縮包,解壓到指定文件夾就可以了,我解壓到了之前搭建Android時的SDK同級目錄下了D:\Android下


2、解壓完成後,不要忘了配置一下NDK的系統環境變量!!!!



到此爲止,Cygwin+NDK下載安裝完畢!!!!那麼如何使用他們進行交叉編譯?

第八步:交叉編譯項目

1、進入cygwin/home/計算機名下,打開.bash_profile

2、在.bash_profile文件最後添加如下內容:
#ndk的根路徑
NDK_ROOT=/cygdrive/d/Android/android-ndk-r9d
export NDK_ROOT

#cocos2dx的根路徑
COCOS2DX_ROOT=/cygdrive/g/projects-cocos2dx/cocos2d-x-2.2.2
export COCOS2DX_ROOT

小知識:bash中export命令----將一個bash局部變量變成一個bash全局變量

3、現在你可以打開Cygwin終端,執行如下命令
cd $NDK_ROOT
cd $COCOS2DX_ROOT
出現下圖輸出即配置成功了,你可以直接使用這些變量了(爲什麼要配置這些變量,下面我會解釋原因!!!!)

4、進入cocos2dx中的proj.android\jni修改Android.mk文件(在紅框內容處增加你所要編譯的文件路徑,helloworld示例程序只有以下三個)

5、 進入cocos2dx中的proj.android,執行build_native.sh文件

6、然後耐心等待編譯完成吧!!會花費幾分鐘吧!!編譯完成後,會出現如下界面,並在proj.android\libs\armeabi\下生成so文件(binggo!!交叉編譯成功!)


####################################################################################
補充介紹:上面第二步配置Cygwin的.bash_profile文件時的NDK_ROOT和COCOS2DX_ROOT有什麼用呢?你又沒有注意到你執行build_native.sh的時候會打印一些信息,我們看一下build_native.sh腳本內容!!
紅框1---判斷NDK_ROOT變量是否定義了;(這就是我們配置了NDK_ROOT的原因)
紅框2--獲取當前執行的bash腳本的路徑;
紅框3--打印相關路徑信息;
紅框4--新創建一個assets資源文件夾,拷貝Resources下資源到assets中!
熟悉bash的人應該不難理解它。

####################################################################################

第九步:Android開發環境搭建

(我的上一篇文章 http://blog.csdn.net/longming_xu/article/details/28241045 詳細介紹過了,就不再贅述了,直接使用就可以了!)
我們的交叉編譯工作已經搞定了,最後就是生成apk,在Android手機上測試了。

1、首先打開eclipse,然後File----New-----Project--從已有的代碼創建一個項目---next

2、導入helloworld項目地址,執行Finish

3、創建新項目目錄結構如下圖,你會發現他報錯了,說沒有導入包org.cocos2dx!!!

4、解決辦法有兩種:
一種是拷貝\cocos2d-x-2.2.2\cocos2dx\platform\android\java\src下的org文件夾到\cocos2d-x-2.2.2\projects\helloworld\proj.android\src中,刷新一下項目,錯誤消失

另一種是直接新創建一個項目把java的庫作爲lib方式加入進來(cocos2dx自行配置了此方式),添加完成後,錯誤消失


5、右鍵helloworld---properties,修改如下圖(android目標版本),同理libcocos2dx---properties(不過需要指定他爲lib)


6、ok了,沒有任何錯誤了,右鍵helloworld項目,執行一下吧run as...

這樣你就在cocos2d-x-2.2.2\projects\helloworld\proj.android\bin下生成一個android的apk文件了,可以安裝到android手機上了!!!!(你也可以用AVD模擬器測試一下,不過它一般反應比較慢,建議真機測試!!)




ok了!cocos2dx的交叉編譯到Android上完成了。我們總結一下吧!
1、首先你要下載安裝vs2012+番茄插件----這樣你就可以進行c++開發了
2、下載安裝python----創建cocos2dx的新項目時候需要用到
3、下載cocos2d-x-2.2.2版本,解壓即可---我們進行遊戲開發的2d遊戲開源框架
4、然後我們介紹了利用上面的各種工具如何創建一個helloworld程序
5、下載安裝cygwin和NDK(r7以後就不需要cygwin了,它自帶了一個編譯器)
6、進行交叉編譯項目(就是在cygwin下執行proj.android文件夾下的一個腳本:裏面配置好了各種信息。在執行腳本之前不要忘了配置一下jni文件夾下的mk文件哦)編譯完畢會生成一個so文件。小提示:什麼是mk文件?什麼是so文件?android的東西,可以去了解一下,我沒去了解過!
7、最後一步就是在eclipse中導入該項目,編譯生成apk了!!!!完事你就可以部署到手機上了!


建議:如果想要了解這些的原理,可以學習一下android項目開發(jni技術、ndk的使用、cygwin的使用、bash的語法啊),瞭解了這些你應該就會覺得交叉編譯到android上其實不難

總算是寫完了,有了上一次寫博客的經驗,這次儘量寫的不那麼囉嗦!可是依然稍顯囉嗦......希望大家不要介意,只是想要寫的讓大家明白些。大家如有有什麼疑問可以回覆給我,我會及時給大家解決!同時歡迎大家批評指正哦。

本博客只介紹方式一:cygwin+NDK,那麼方式二呢?NDK r7版本之後就不需要cygwin了,因爲它自帶了一個小編譯器!!!配置一下eclipse即可(待續)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章