cocos2d-x項目過程記錄(跨平臺iOS和Android)

(原創做品,歡迎轉載,註明出處,謝謝:http://www.cnblogs.com/binxindoudou/admin/EditPosts.aspx?postid=3205249javascript

1.配置環境,重點是eclipse環境的配置相對麻煩,重點是android開發的環境ADT,c/c++的編譯工具NDK,SDK等概念的理解和配置。html

2.另外最重要的就是跨平臺(在此僅指跨安iOS和Android)的原理java

3.對兩個重要文件的認識: build_native.sh和Android.mk,須要瞭解shell編程的相關和Android.mk的編寫相關android

4.在Android.mk中,$LOCAL_SRC_FILES的填寫比較重要,記錄下遍歷一個目錄下全部.cpp資源的方法(非jni目錄)c++

LOCAL_PATH := /Users/admin/Desktop/ASCircuitCobwebX/ASCircuitCobwebX/Classes 

……

MY_CPP_PATH := $(LOCAL_PATH)/ My_All_Files := $(shell find $(MY_CPP_PATH)/.) My_All_Files := $(My_All_Files:$(MY_CPP_PATH)/./%=$(MY_CPP_PATH)%) MY_CPP_LIST := $(foreach c_file,$(My_All_Files), $(wildcard $(c_file)/*.cpp) ) MY_CPP_LIST := $(MY_CPP_LIST:$(LOCAL_PATH)/%=%) LOCAL_SRC_FILES := $(MY_CPP_LIST) 

$(warning $(LOCAL_SRC_FILES))

……

5.讓Xcode和Eclipse維護同一份代碼:參考web

http://www.cnblogs.com/binxindoudou/articles/3205020.htmlshell

6.Android.mk的編寫原理及技巧:參考:編程

http://www.cnblogs.com/binxindoudou/articles/3205213.htmlbash

http://www.cnblogs.com/binxindoudou/articles/3205035.htmlapp

7.維護同一份代碼和資源文件,那麼就會涉及到路徑問題,在iOS中沒有問題,iOS中使用了虛擬路徑,因此只要在工程中的文件均可以被找到,由於當你引入文件的時候系統已經幫你創建起了物理路徑和虛擬路徑的關聯(固然前提是你在引入文件的時候使用默認的配置,以下圖)

若是是這樣的話,那麼就是已經系統自動關聯,在#include的時候或者createWithFile("");就均可以直接寫入文件名稱了

可是這個在Eclipse下是行不通的,它沒有這個機制,因此我綜合了網上的資料,覺着文件夾仍是須要分的,因此就委屈一下iOS不使用虛擬路徑了。

8.Xcode和Eclipse維護同一份代碼的步驟記錄(如下部分參照:http://www.cocoachina.com/gamedev/gameengine/2012/0428/4206.html結合本身的實踐作的整理,要是有什麼不對的地方,還望大牛們指出)

1⃣環境:

Xcode-4.6.2   Cocos2d-x-2.1.4    ADTv22.0.1-685705

注:

  爲了可讓eclipse編譯java/c++的代碼,須要安裝c++插件

  Help--》Install New Software--》選擇你的對應eclipse版本升級站點--》在插件樹裏面找到Programming Languages--》C/C++ Development Tools

  而後等待下載安裝完成就好了

2⃣在Xcode下新建cocos2d-x的工程:testIos(目標是:兩個IDE共同維護testIos下的Classes和Resources文件夾)

3⃣建立安卓的cocos2d-x的文件:testAndroid

4⃣而後新建安卓工程,導入生成的proj.android(在此不要選擇添加到workspace,這個涉及到相對路徑的問題)

5⃣而後去掉src的錯誤:

右鍵項目--》Build Path-->Link Source

Browse-->cocos2d-x-2.1.4/cocos2dx/platform/android/java/src(尋找解壓開的引擎目錄)

改名爲:cocos2dxsrc便可

6⃣將java項目轉爲java/c++項目:

選中項目-->file-->new-->other-->c/c++-->Convert to a C/C++ Project-->makefile project-->other toolchain-->finish

7⃣右鍵項目->properties-->c/c++build-->去掉Use default build command--

  填入 bash ${workspace_loc:/testAndroid}/build_native.sh NDK_DEBUG=1 V=1

  紅字換成你本身的,在此窗口下有一個文本框中有這個變量,這步是爲了尋找build_native.sh

8⃣修改build_native.sh 和 Android.mk

這兩個文件都是腳本生成的,因此會有一些路徑上的問題

build_native.sh

確認APPNAME="testAndroid"     COCOS2DX_ROOT="$DIR/../.."(默認向上跳兩層)

Android.mk

LOCAL_PATH := /Users/admin/Desktop/testIos/testIos/Classes

如下是爲了遍歷一個目錄下的全部.cpp包括子目錄

MY_CPP_PATH := $(LOCAL_PATH)/

My_All_Files := $(shell find $(MY_CPP_PATH)/.)
My_All_Files := $(My_All_Files:$(MY_CPP_PATH)/./%=$(MY_CPP_PATH)%)

MY_CPP_LIST := $(foreach c_file,$(My_All_Files), $(wildcard $(c_file)/*.cpp) )
MY_CPP_LIST := $(MY_CPP_LIST:$(LOCAL_PATH)/%=%)

LOCAL_SRC_FILES := $(MY_CPP_LIST)

9⃣引入testIos的Classes文件和Resources文件

右鍵項目-->c/c++ General-->path and symbols-->Source Location->Link Folder-->勾選Link to the folder in the file system->brwose--》選擇testIos下的Classes文件夾(Resources一樣)

1⃣0⃣去除文件中的部分警告和錯誤

打開main.cpp,會有警告和錯誤,是由於沒有包含相應文件(如下目錄只作參考)

右鍵項目-->c/c++ General path and symbols-->Includes-->add

/Users/admin/Desktop/cocos2d-x-2.1.4/cocos2dx   ===>解決的是#include"platform/android/jni/JniHelper.h"的警告

/Volumes/MacOSFiles/Cocos2d-XAndroid/android-ndk-r8e/platforms/android-8/arch-arm/usr/include   ===>解決了#include<jni.h> #include<android/log.h>

/Users/admin/Desktop/cocos2d-x-2.1.4/cocos2dx   ===>解決了#include"cocos2d.h"

而後還有好多錯誤(畫着小蟲子的那些,是由於eclipse對c++解析能力不強致使的)

解決方案:右鍵項目-->c/c++ General-->Code Analysis-->把全部對勾去掉就行了

恩,到這,世界就安靜多了,嘿嘿。。。:)

1⃣0⃣而後project-->build all,(若是提示NDK_ROOT not defined,那就c/c++build-->Evironment-->Add-->添加你的NDK路徑)

1⃣1⃣至此,要是沒有什麼問題,你就能夠在模擬器或者真機運行了。

9.更換項目包的名稱和圖標

若是不作任何處理,那麼你會發現項目名稱會是:testAndroid,圖標是默認的藍色小火苗(注意如下res不是bin下的)

改名:res/values/string.xml

<?xmlversion="1.0"encoding="utf-8"?>

<resources>

    <string name="app_name">Your App Name</string>

</resources>

更改圖標:res/drawable-****,依照小火苗比例製做本身的Icon就好了。

(原創做品,歡迎轉載,註明出處,謝謝:http://www.cnblogs.com/binxindoudou/admin/EditPosts.aspx?postid=3205249

相關文章
相關標籤/搜索