史上最清晰快捷的mac下新建cocos2dx跨ios安卓項目教程

上篇講了搭建環境,現在談談新建項目

大家可以按quick-cocos2dx這篇官方文章在自己中意的目錄<PathMyProject>下新建工程——當然,你會發現之後還有少許一些事情要做。

1. 首先是普遍碰到的org.cocos2dx.lib.Cocos2dxActivity的問題。網上有文章提到的一些方法,其相關的文件可能由於各軟件版本更迭已經找不到了。我所處環境的解決方法是打開<PathMyProject>/proj.android/build_native.sh, 在如下所示位置插入一句話,然後在終端裏重新build_native一下就沒問題了

##找到如下幾行
echo "- copy scripts"
cp -rf "$APP_ROOT"/scripts "$APP_ANDROID_ROOT"/assets/
echo "- copy resources"
cp -rf "$APP_ROOT"/res "$APP_ANDROID_ROOT"/assets/
##在此添加以下兩句
echo "- copy platform classes"
cp -rf "$COCOS2DX_ROOT"/cocos2dx/platform/android/java/src/org "$APP_ROOT"/proj.android/src

不服不行,q-c2dx在項目快速建立方面確實很贊。你會發現你的項目目錄被劃分成如下樣子:

ios及android項目及配置都分別在proj.ios和proj.android下面。res裏放着你的資源,scripts放着lua腳本,sources放着c++源代碼,分的相當清楚。媽媽再也不用擔心我被安卓搞瘋了!!!


2. 之後你可以在sources下添加自己的c++代碼了,朋友們的建議是c++的include裏必須包含源文件在sources下的完整路徑,否則android編譯會出問題。但是許多第三方庫如果也要逐文件添加include的完整路徑不是一件合理的事情,經研究發現可以用如下方法解決,:
用文本編輯器打開<PathMyProject>/proj.android/jni/Android.mk文件,找到LOCAL_C_INCLUDES := ...的位置,在後面添加字段。比如你c++源碼裏一共有FolderA到FolderC三個文件夾,都位於<PathMyProject>/sources根目錄下。則需要寫成:
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../sources\
$(LOCAL_PATH)/../../sources/FolderA\
$(LOCAL_PATH)/../../sources/FolderB\
$(LOCAL_PATH)/../../sources/FolderC\

要注意,這裏列出的路徑是不遞歸的,也就是說如果FolderA下還有兩個目錄FolderA1和FolderA2,你必須把這兩個目錄也列上,變成:
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../sources\
$(LOCAL_PATH)/../../sources/FolderA\
$(LOCAL_PATH)/../../sources/FolderA/FolderA1\
$(LOCAL_PATH)/../../sources/FolderA/FolderA2\
$(LOCAL_PATH)/../../sources/FolderB\
$(LOCAL_PATH)/../../sources/FolderC\
所以這種方法只能部分解決問題,主要適用於比較扁平的代碼文件夾結構,或是不方便編輯的第三方代碼。如果你本地項目目錄複雜,那GeekMouse對你只有一個建議:就是把本地項目C++代碼還是統一放到一個目錄下,只不過在XCode工程裏把路徑劃分更仔細些。這樣在使用XCode編輯C++代碼時邏輯很清晰,同時又可以避免build android工程時很多不必要的工作量。

最後,res下的資源文件一般都隨項目情況包含許多子目錄,在編譯時你有兩個選擇,要麼使用各種腳本把這些資源展平到一個文件夾裏供android項目使用(我死黨有那個腳本代碼,本帖頂貼多了我就偷偷發上來),要麼在c++裏引用資源時就寫全資源的路徑。說實話都不爽,誰叫android項目沒xcode那麼智能。

本人還在繼續學習中,此篇文章將持續更新
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章