標籤:
連結地址:http://m.blog.csdn.net/blog/yhc13429826359/29357815
2014-6-8閱讀578 評論0
前言:cocos2dx作為一個開源的移動2D遊戲架構,其跨平台的特性讓它備受開發公司的歡迎。這裡我就不做概念性的解釋了,通過這篇文章你就會瞭解到,它的跨平台性”是個什麼樣子的“---有點擬人化了 我舉個比較形象的例子: 有A、B、C三個部落,A部落的語言是A和O語言,B部落的語言是B和O語言,C部落的語言是C和O語言。你作為一個外星球人你會選擇去學習哪種語言,讓自己能夠行走於各個部落之間?O語言對不對!因為學會這門語言你就可以任何一個部落中與人交流! 回到開發中,每個部落就是一個系統平台(Android、IOS),Android開發基於java語言但同樣支援C++,IOS開發基於Object-C(新推出了swift--推出第二天就有公司30w招3年經驗的swift程式員,我想說:“是哪家家公司?你可以招三年後的我”)但它也支援C++,而你我都知道cocos2dx是用C++編寫的,那麼cocos2dx的跨平台性就是用c++寫的代碼稍加修改就可以在Android和IOS中編譯運行。 這就是cocos2dx的“一次編寫,多平台編譯運行”。注意哈:這區別於java的跨平台特性“一次編譯,處處運行”(java開發的程式運行是基於JVM(虛擬機器)的,不管什麼平台,只要你安裝了JVM,就可以運行java程式) 這篇文章會帶你走過,如何在win32平台上建立一個cocos2dx的HelloWorld程式,然後移植到Android上去(Mac平台以後再介紹)本人機器配置:
win7+vs2012(用著挺爽,以前一直用vs2008,現在直接越過vs2010--它啟動超慢)本文章開發環境:vs2012+cocos2d-x-2.2.2+Cywin+NDK+Android開發環境(在我的上一篇文章中介紹了如何搭建Android開發環境--http://blog.csdn.net/longming_xu/article/details/28241045,本文就不介紹了)
學習進度表:
- 下載並安裝vs2012(如果已安裝就掠過,我在這裡也不會介紹他的安裝,如果你安裝的其他版本也不打緊,畢竟他只是一個輔助開發的IDE而已(但很強大哦),只會在配置上有些不一致而已)
- 下載並安裝Visual Assist X(番茄外掛程式--因其表徵圖是一個番茄樣子,所以這麼稱之為番茄外掛程式,這裡我也不會介紹如何下載安裝破解,自己網上去搜吧,一大堆)
- 下載安裝python(python是一門強大的指令碼語言,cocos2dx最最前身就是用python寫的,這需要去看一下cocos2d的發展史。cocos2dx使用python指令碼來建立新項目,後面你會看到它的建立指令碼)
- 下載cocos2d-x-2.2.2版本
- 建立一個helloworld程式
- 下載Cygwin安裝
- 下載NDK並安裝
- 交叉編譯項目
- Android開發環境搭建
開始上菜......第一步:下載並安裝vs2012:
我之前做端遊開發一直用的是vs2008+番茄外掛程式,用著還不錯!想當初,剛接觸公司項目的時候,好傢夥,代碼檔案多達3000了,想象一下,一個習慣了指令碼開發,突然要編譯這3000個檔案,這是何等工程!!!!每次改一個共用標頭檔,( ⊙ o ⊙ )!丫的就得用我半個小時還多的時間!!!!不過還好後來接觸了IncrediBuild這個聯機編譯工具,它對c++開發人員來說簡直就是”神器“。我當時在公司三台機器上安裝了聯機編譯,好傢夥!!!只用10分鐘左右就搞定了3000多檔案。vs系列+番茄外掛程式+IncrediBuild簡直是一個c/c++開發的超強組合!說到這就流口水!!....流口水????我怎麼會想到這個詞???vs2008---vs2010---vs2012我都安裝過,個人感覺vs2010有點脆!光開啟它就夠我受的了,所以沒幾天就換上vs2012了(它的安裝可是真夠漫長的了)他們之間使用感受,可以上網上搜一下(也許後期我會寫這麼一篇文章...),我在這裡假設你已經安裝了vs2012開發環境了。
第二步:下載並安裝Visual Assist X:
Visual Assist X---我們都稱之為番茄外掛程式,就是因為他的表徵圖特像番茄(就是一個番茄,對吧)其功能非常強大,能夠提示關鍵字的輸入,自動錯誤修正,能夠識別系統函數,使用者自己定義函數和變數,為軟體的開發帶來了極大的方面,不僅提高了開發效率,也提高了編程的樂趣 。它是作為一個vs增強外掛程式存在的,它讓我們的編程更快捷方便。有很多小功能能夠加速你的開發和錯誤修正改錯能力。(這裡我假設你已經下載安裝,當然你也可以選擇不下載,他只是一個vs功能增強外掛程式,沒有它你一樣可以用vs進行開發,只是它確實很“迷人的”,用一用就知道,別忘了破解一下...都是中國人!!)
第三步:下載和安裝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每個版本的變動都很大(如果你想瞭解各個版本的變化,請自行Google),這也是我初學的時候比較蛋疼的地方,有時候就納悶為什麼cocos2dx不搞一個像unity3D那樣的整合式開發環境呢?每個版本的變動,竟然連工程建立方式都不一樣,讓我們情以何堪啊(3.0版本變動據說挺大的來...)!!!在這裡我只介紹2.2.2版本的工程建立,其他版本自行Google嘍(因為這不是本文的主要內容,如果有需要的話,可以考慮後續補充)。: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、解壓後的檔案結構是這個樣子的(介紹組織圖的文章,自行Google) 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)
@echo offset /p projectName=請輸入項目名稱:if "%projectName%"=="" goto inputError1set /p packageName=請輸入包標示名:if "%packageName%"=="" goto inputError2set /p language=請輸入語言:if "%language%"=="" goto inputError3create_project.py -project %projectName% -package %packageName% -language %language%pauseexit:inputError1@echo 項目名稱不可為空!:inputError2@echo 包標示名不可為空!:inputError3@echo 選擇語言不可為空!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的jni(Java 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上編譯往往很麻煩。
:https://cygwin.com/install.html它的安裝教程我就不寫了,得配好多圖....我就先“盜用”別人的連結了供大家參考一下:http://jingyan.baidu.com/article/60ccbceb02fe4264cbb19776.htmlhttp://www.xpgod.com/article/16739.htmlhttp://www.33lc.com/article/7276.html 注意:安裝組件過程中,必須安裝的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-r9dexport NDK_ROOT #cocos2dx的根路徑COCOS2DX_ROOT=/cygdrive/g/projects-cocos2dx/cocos2d-x-2.2.2export COCOS2DX_ROOT 小知識:bash中export命令----將一個bash局部變數變成一個bash全域變數 3、現在你可以開啟Cygwin終端,執行如下命令cd $NDK_ROOTcd $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即可(待續)
[原]詳解如何將cocos2dx項目編譯到Android平台上的(方式一:Cywin+NDK)