ccocos2d-x是一個基於MIT協議的開源架構,用於構建遊戲、應用程式和其他圖形介面互動應用。它的最大特點就是跨屏台性,支援IOS, Android,Windows, WindowsPhone等諸多平台,可以在建立多平台遊戲上節約大量人力、物力。下面,介紹cocos2d-x項目交叉編譯到Android平台,產生APK安裝檔案的過程.
一、交叉編譯cocos2d-x到Android需要Java,Python環境,需要先搭建好,這裡不再贅述。
二、搭建Eclipse下Android的開發環境(需要eclipse和Android SDK)Android官網上提供了整合式開發環境,下載完後解壓啟動eclipse即可使用,十分方便。:http://developer.android.com/sdk/index.html#download選擇與自己電腦對應的版本,下載完後解壓 進入eclipse檔案夾,試試能不能啟動ecplise。如果可以啟動,Android的開發環境就算搭建好啦。
三、安裝Android NDK Android NDK是android交叉編譯時間對C/C++的解析編譯工具。:http://developer.android.com/tools/sdk/ndk/index.html選擇對應的版本,下載完後需要添加環境變數:添加變數名為NDK_ROOT變數值為直到有許多檔案的檔案路徑
四、安裝cygwin 到cygwin的官網上下載cygwin:http://www.cygwin.com/下載完後點擊安裝,路徑一般選擇預設路徑。下載源選用http//:mirrors.163.com較快。最重要的一點,在選擇需要下載的包時,要勾選Devel項為Install,Devel包下有make工具,編譯Android時需要使用。其他包都是不必要的,建議不勾選。全部包貌似有7、8G,可以下到天亮了。
接下來要配置cygwin的NDK環境(cygwin利用NDK編譯C++代碼)開啟cygwin安裝目錄的home檔案夾,裡面有一個自動產生的使用者名稱檔案夾(例如我的是:C:\cygwin\home\chen)編輯裡面的.bash_profile檔案,在檔案的最後添加NDK的路徑(路徑跟NDK環境變數一致):請特別注意要使用cygwin的路徑格式,使用 ‘/ ’而非windows的 ‘\’,cygdrive是指本地磁碟,g是指g盤。
五、利用cygwin編譯cocos2d-x項目開啟cocos2d-x項目中的proj.android檔案夾1)開啟proj.android檔案夾中的jni檔案夾,編輯裡面的Android.mk檔案,在LOCAL_SRC_FILES中手動添加項目中的所有的cpp名字。 或者利用如下代碼更改為如下自動遍曆Classes檔案夾添加cpp類(也是在Android.mk中更改,將LOCAL_SRC_FILES部分的代碼替換為如下代碼)
# 遍曆目錄及子目錄的函數define walk$(wildcard $(1)) $(foreach e, $(wildcard $(1)/*), $(call walk, $(e)))endef# 遍曆Classes目錄ALLFILES = $(call walk, $(LOCAL_PATH)/../../Classes)FILE_LIST := hellocpp/main.cpp# 從所有檔案中提取出所有.cpp檔案FILE_LIST += $(filter %.cpp, $(ALLFILES))LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)</span>
2)運行cygwin,回到proj.android下,將目錄下的build_native.sh檔案拖曳到cygwin視窗中開始編譯項目。 成功編譯:
六、在eclipse中匯入項目並產生Apk檔案1.首先匯入項目:右擊選擇import,然後你的cocos2d項目(注意是你的cocos2d項目,而不是proj.android檔案夾)
2.因為eclipse需要調用cygwin的bash程式來編譯android項目,所以要在eclipse中配置cygwin的資訊。 首先,右擊項目->選擇property->選擇builders->選擇New->選擇Program建立一個編譯器。 如下是我的程式資訊:
Name不用修改,保持為Native_Builder
Location改為你的bash程式的路徑,找到bash.exe的位置即可。
Working Directory改為你的cygwin的bin目錄
Arguments將最後的APP= SameGame改為你的項目名稱(SameGame是我的項目名稱)
點擊OK,接著通過UP將Native_Builder調至最上面
接著選擇C/C++ Build->Enviroment->Add添加你的cygwin的bin路徑,點擊OK
接著,就可以右擊運行程式(run as android application),然後再cocos2d項目的proj.adnroid下的bin檔案夾中會產生該項目的APK檔案,拿出來安裝到手機吧,可以就大功告成啦!!
這裡注意,因為android虛擬機器不支援OpenGL,所以在虛擬機器上不能測試cocos2d項目,所以產生的APK檔案要在真機行運行。
常見問題:1.在ecplise中點擊run as android application後會出現...Zip add failed的問題,這其實是檔案存取權限的問題,在使用cygwin 編譯代碼時沒有聲明更進階的存取權限,所以有些資源無法訪問。
[2014-06-03 20:02:52 - MyApp] Unable to add 'G:\cocos2d-x-2.2.3\projects\MyApp\proj.android\assets\crystal_guardian\background.jpg': Zip add failed[2014-06-03 20:02:52 - MyApp] ERROR: unable to process assets while packaging 'G:\cocos2d-x-2.2.3\projects\MyApp\proj.android\bin\resources.ap_'
解決方案:在使用cygwin時,聲明proj.android為chmod -R 755*訪問模式。 進入cocos2d的工程後,輸入chmod -R 755* proj.android 即可聲明proj.android的存取權限。
2.如何改變橫屏豎屏顯示? eclipse上預設為橫屏顯示,如果需要豎屏顯示,首先開啟專案檔中的AndroidMainifest.xml檔案,在activity中可以看到 android:screenOrientation = "landscape" //橫屏 將它更改為 android:screenOrientation="portrait" //豎屏
如上是cocos2d-x交叉編譯到安卓的全過程,希望對你們有協助。本文參考文章:http://blog.csdn.net/sttyytw/article/details/17005263 ,部分圖片取自上面的部落格。