鏈接地址: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每個版本的變動都很大(如果你想了解各個版本的變化,請自行谷歌),這也是我初學的時候比較蛋疼的地方,有時候就納悶為什么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)
@echo off
set /p projectName=請輸入項目名稱:
if "%projectName%"=="" goto inputError1
set /p packageName=請輸入包標示名:
if "%packageName%"=="" goto inputError2
set /p language=請輸入語言:
if "%language%"=="" goto inputError3
create_project.py -project %projectName% -package %packageName% -language %language%
pause
exit
: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.html
http://www.xpgod.com/article/16739.html
http://www.33lc.com/article/7276.html
第七步:下載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
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即可(待續)