天天看點

cocos2d-x在window和android下的配置(這個版本在window下本人試過可用)1. 引言2. cocos2d-x Win32環境配置3 cocos2d-x Android 環境配置4其它

COCOS2D-X配置手冊

(Win32、Android)

編制:劉勤熙 李育

完成日期:2012-1-19

目錄

1. 引言 3

2. cocos2d-x Win32環境配置 3

2.1 win32開發環境配置 3

2.1.1 Visual Studio 2008 3

2.1.2 cocos2d-x 3

2.1.3 (可選)Visual Assist X 3

2.1.4 (可選)doxygen 4

2.2 Win32 可執行檔案生成過程 5

2.3 常見問題總彙 7

3 cocos2d-x Android 環境配置 8

3.1 android開發環境配置 8

3.1.1 Eclipse 3.7.1 8

3.1.2 Eclipse ADT插件 8

3.1.3 Eclipse CDT插件 10

3.1.4 AndroidSDK 12

3.1.5 AndroidNDK 13

3.1.6 Cygwin 13

3.2 Android可執行檔案生成過程 15

3.2.1 前期準備 15

3.2.2 生成Android空工程 15

3.2.3 交叉編譯so檔案 15

3.2.4 生成android系統可用的apk檔案 16

3.3 常見問題彙總 18

4其它 18

1. 引言

略……

一切需要的軟體及插件版本号以筆者使用為準,其它版本号的軟體及插件不保證有效。檔案下載下傳位址在2012-1-19确認有效,不保證因各種原因導緻下載下傳位址失效。

開發平台作業系統為win32(WindowsXP、WindowsVista、Windows7)

2. cocos2d-x Win32環境配置

2.1 win32開發環境配置

2.1.1 Visual Studio 2008

安裝VisualStudio2008,預設安裝即可,如果是自定義安裝,VisualC++元件應選中。

2.1.2 cocos2d-x

1. 下載下傳cocos2d-x引擎最新版

官方下載下傳位址為:http://code.google.com/p/cocos2d-x/downloads/list

(目前使用版本為cocos2d-1.0.1-x-0.10.0.zip)

2.将cocos2d-1.0.1-x-0.10.0.zip解壓縮至硬碟任意目錄(建議D:\Work7\cocos2d-1.0.1-x-0.10.0\, 因為現在wophone的開發環境必須安裝至此, 以下以此為例)

3. 如果想檢視引擎源代碼,可以在.\cocos2dx\proj.win32目錄下找到代碼配置檔案。

2.1.3 (可選)Visual Assist X

用來提高VisualStudio2008的工作效率, 可以安裝此工具。

安裝支援VS2008版本的任意一版,無需配置。本軟體是收費軟體,需要注冊。

技巧:如果不想讓VAX對注釋中的拼寫進行校正(即去掉單詞下面的波浪線提示),可以選擇Visual Assist X Option, 進行如下配置:

2.1.4 (可選)doxygen

安裝工具 doxygen 1.7.6.1 Win32版本(本例用, 本工具為開源軟體)

運作 doxygen, 選擇 file->open

找到 "D:\Work7\cocos2d-1.0.1-x-0.10.0\doxygen\" 目錄下的doxygen.cocos2d-x檔案, 并打開

(此檔案為cocos2d-x代碼的 doxygen 配置文檔)

然後選擇 run 頁籤, 點選 rundoxygen 按鈕開始生成.

生成完成後, 在 "D:\Work7\cocos2d-1.0.1-x-0.10.0\doxygen\" 目錄下, 可以看到幫助檔案夾

通過修改doxygen的一些設定, 可以很友善的生成各種标準的幫助文檔.

2.2 Win32 可執行檔案生成過程

1. 運作cocos2d-x 解壓目錄根目錄下面的build-win32.bat(..\..\build-win32.bat), 生成debug庫檔案, 執行成功後, 庫檔案儲存在.\Debug.win32 下.

2. 運作..\..\install-templates-msvc.bat, 将項目模闆加入VS2008模闆庫。

3. 将.\Debug.win32目錄下的所有dll檔案拷貝至Windows\system32\

4. 打開VS2008 IDE, 選擇VisualC++工程. 建立一個項目, 可以看到新加入的cocos2d模闆

選擇第一項, cocos2d-win32 applivation, 為項目任意命名(因為這一版無論怎樣命名, 生成的工程檔案都是helloword), 然後在向導欄選擇預設值, 直接點finish.進入項目設計界面.

5. 依次選擇 工具->選項->項目和解決方案->VC++目錄

在包含檔案欄, 加入下列項目

D:\Work7\cocos2d-1.0.1-x-0.10.0\Box2D

D:\Work7\cocos2d-1.0.1-x-0.10.0\CocosDenshion\include

D:\Work7\cocos2d-1.0.1-x-0.10.0\cocos2dx\platform\third_party\win32\OGLES

D:\Work7\cocos2d-1.0.1-x-0.10.0\cocos2dx\platform\win32

D:\Work7\cocos2d-1.0.1-x-0.10.0\cocos2dx\platform

D:\Work7\cocos2d-1.0.1-x-0.10.0\cocos2dx\include

D:\Work7\cocos2d-1.0.1-x-0.10.0\cocos2dx

D:\Work7\cocos2d-1.0.1-x-0.10.0

D:\Work7\cocos2d-1.0.1-x-0.10.0\chipmunk\include\chipmunk

D:\Work7\cocos2d-1.0.1-x-0.10.0\cocos2dx\platform\third_party\win32

(上面紅色部分第一個是重力引擎, 第二個應該是個網絡連接配接的東西)

在庫檔案欄, 加入

D:\Work7\cocos2d-1.0.1-x-0.10.0\Debug.win32

(引用的是該目錄下的所有Lib檔案)

(釋出時用release目錄下的!!)

6. 點選VS9 IDE的啟動調試按鈕, 正常情況可以編譯通過, 并顯示 helloworld頁面

看到這個頁面, 表示win32環境配置成功.

2.3 常見問題總彙

1. 錯誤: 

"error PRJ0019: 某個工具從以下位置傳回了錯誤代碼"(及類似錯誤)

"引用了一個%$#$#@.."

處理: 

include 設定有誤.

dll沒有放在正确位置

2. 錯誤: 

"LNK1000: Internal error during IncrBuildImage" 

"....上一個增量連結沒有生成它;正在執行完全連結..."

處理: 

這是微軟的一個漏洞, 下載下傳KB948127更新檔, 安裝即可.

如果不能正常安裝, 也可以把VS9中的增量編譯關掉:

項目名處點右鍵, 依次選擇->屬性->配置屬性->連結器->正常->啟用增量連結(否)

以後再遇上此類問題, 可以嘗試再次編譯或者清理後重新生成.

3. 錯誤:

"....error LNK2019: 無法解析的外部符号...."

處理:

lib沒有添加依賴

工程 點右鍵->屬性->配置屬性->連結器->輸入 附加依賴項 填入以下lib檔案

libcocos2d.lib libgles_cm.lib libBox2d.lib libchipmunk.lib libcurl_imp.lib libCocosDenshion.lib

libjpeg.lib libpng.lib liblua.lib libxml2.lib libEGL.lib libzlib.lib libzlib.lib libiconv.lib

pthreadVCE2.lib

(根據實際使用情況填寫)

3 cocos2d-x Android 環境配置

3.1 android開發環境配置

Android開發需要用到JDK,做程式的都知道……

3.1.1 Eclipse 3.7.1

下載下傳位址:http://www.eclipse.org/downloads/packages/eclipse-classic-371/indigosr1

選擇對應的連接配接進行下載下傳(32位作業系統或64位作業系統)

eclipse為全綠色開發工具,直接解壓縮後即可使用。

3.1.2 Eclipse ADT插件

該插件是 Eclipse平台下用來開發 Android 應用程式的插件。打開eclipse3.7.1選擇 Help-> Software Updates,在Work with欄填入https://dl-ssl.google.com/android/eclipse/ 等待eclipse搜尋完成後,會在主視窗中列出ADT插件下載下傳項目,全部選擇,點選Next按鈕。

再次點選Next按鈕後出現軟體許可視窗,需要勾選同意,然後點選Finish按鈕eclipse會開始下載下傳ADT插件。完成後重新啟動可以在File->New->Project菜單下找到Android Project證明ADT更新成功

3.1.3 Eclipse CDT插件

安裝CDT插件的目的為令eclipse可以識别由C/C++開發的代碼,對其進行編譯。

CDT可以從http://www.eclipse.org/cdt/downloads.php 下載下傳到,對應eclipse3.7.1的CDT插件版本為CDT8.0.1。

下載下傳完成後,啟動eclipse,選擇Help-> Software Updates,點選ADD按鈕選擇archive,選擇下載下傳好的CDT插件zip檔案(cdt-master-8.0.1.zip)然後OK确認,勾選全部安裝項目,點選next按鈕eclipse會開始安裝。同樣,在安裝過程中有一次同意軟體協定選項的勾選。

完成後eclipse會要求重新開機軟體,OK即可。重新開機eclipse後選擇New->Projec會發現eclipse已經支援C/C++項目。

3.1.4 AndroidSDK

Android SDK可以從 http://developer.android.com/sdk/index.html 下載下傳到,截止到2012-1-19最新版本為r16,請選擇對應windows作業系統位數進行下載下傳。

下載下傳完成後解壓到任意路徑即可,解壓後路徑内不包含任何SDK,還需要運作

SDK Manager.exe進行SDK包下載下傳。

筆者沒有下載下傳最新的SDK,是通過r10版本的SDK Manager進行更新的。将r10版本的

SDK Manager.exe更新至r15,即可看到新釋出的SDK包。更新過程中筆者碰到了一個目錄被占用的錯誤,解決辦法為:打開androidSDK所在路徑的temp檔案夾将tools_r15-windows.zip解壓縮,将tools_r15-windows中的tools檔案夾覆寫至androidSDK根目錄,選擇“No”即可,選擇需要的包進行下載下傳安裝(2.1、2.2、2.3版本的SDK包均有更新)。

3.1.5 AndroidNDK

使用NDK的目的為将C/C++編寫的代碼生成能在arm上運作的*.so檔案。由android的java代碼來調用。

AndroidNDK可以從http://developer.android.com/sdk/ndk/index.html 進行下載下傳,截止2012-1-19最新版本為r7。

3.1.6 Cygwin

Cygwin為Linux模拟環境,因使用NDK生成本地*.so本地庫需要用到交叉編譯環境,而交叉編譯需要在linux系統下才能完成。

Cygwin可以從http://cygwin.com/install.html 下載下傳到。(可以選擇下載下傳但不安裝選項來建立“本地安裝包”)

安裝時,在Cygwin預設安裝配置沒有安裝gcc編譯器,我們必須用到的Devel類中的四個元件包,如果嫌找起來過于麻煩,可将Devel類從Default改為Install全部安裝也可,四個元件包為:

1. binutils元件 

2. gcc元件

3. gcc-mingw元件

4. gdb元件

5. make元件

安裝完成後,運作Cygwin.bat,輸入make -v 和 gcc -v 如果能找的,則表示安裝成功。

3.2 Android可執行檔案生成過程

3.2.1 前期準備

1.代碼檔案:*.h及*.cpp注意代碼檔案中不能含有unicode編碼,必須使用ascii碼。

2. 資源檔案:工程使用的資源

3.2.2 生成Android空工程

1. 進入cocos2d-x目錄,找到create-android-project.bat檔案,使用UE等編輯工具打開進行編輯,修改如下項目:

1) cygwin目錄

找到set _CYGBIN= 在等号後面填入本機cygwin/bin目錄,如:C:\cygwin\bin

2)  <cygwin的目錄>

找到set _ANDROIDTOOLS= 在等号後面填入本機Android/tools目錄,如:

D:\Android\android-sdk-windows\tools

3) AndroidNDK目錄

找到set _NDKROOT= 在等号後面填入本機NDK目錄,如:

D:\Android\android-ndk-r7

修改完成後儲存關閉。

2. 進入cocos2d-x目錄中的cocos2dx目錄,找到Android.mk檔案,使用UE等編輯工具得開進行編輯,編輯此檔案的目的為使用cocos2d支援NDKr7版本。

在檔案的最末尾處找到LOCAL_CFLAGS := -DUSE_FILE32API,将其修改為

LOCAL_CFLAGS := -DUSE_FILE32API -DGL_GLEXT_PROTOTYPES=1,儲存關閉。

3. 運作cocos2d-x下的create-android-profect.bat檔案,

首先輸入項目生成目錄,至少是雙層目錄,如:com.MyGame。

回車後會要求輸入工程名,最好和目錄名一緻,如:MyGame。

回車後會要求選擇AndroidSDK的版本号,一般選擇2.1以上版本,相應id是4

回車後會在cocos2d-x目錄中生成一個工程目錄,工程目錄中含有android、Classes、Resource三個子目錄。

3.2.3 交叉編譯so檔案

1. 将準備好的代碼檔案拷貝到工程下的Classes目錄;資源檔案拷貝到工程下的Resource目錄。打開Classes目錄找到Android.mk,使用編輯工具打開,在LOCAL_SRC_FILES := 

填入要編譯的cpp檔案,儲存後關閉。如:

LOCAL_SRC_FILES := AppDelegate.cpp \

                   GameOverScene.cpp \

                   Joystick.cpp \

                   TerribleGameScene.cpp

2. 打開cygwin,輸入工程路徑下的Android檔案夾的完整路徑,如:cd d:/makeapk/MyGame/Android。然後運作build_native.sh檔案,具體輸入為:./build_native.sh

3. 編譯過程中,如果有錯誤發生請參考後章節的排錯方法進行解決。

4. 補充一點,每次打開cygwin并輸入完整路徑是很麻煩的事情,可以通過下面的方法自動執行一些指令:

用記事本打開cygwin根目錄下的.\etc\bash.bashrc檔案,在檔案末尾加入欲輸入的指令,例如

cd e:

cd APKMAKE/ko/android

./build_native.sh

儲存後,下次運作cygwin時,這幾行指令将自動被執行。

3.2.4 生成android系統可用的apk檔案

1. 打開eclipse,選擇New->AndroidProfect建立新的android工程。

2. 選擇通過已存在的代碼建立工程,浏覽工程目錄下的android檔案夾,eclipse會自動填寫項目名,Finish即可。

5. 右鍵點選建立工程是輸入的工程名對應的java檔案,選擇Run As->Run Configurations進入運作設定。在彈出對話框中輕按兩下Android Application選項,在Android頁籤選擇好工程點選Run按鈕即可。由于真機可用的*.apk檔案将生成于<工程路徑>/Android/bin路徑下。

3.3 常見問題彙總

1. awk過期問題。

在進行編譯so檔案時,AndroidNDK r7版本有一個 awk過期問題,進入NDK目錄下的prebuilt\windows\bin檔案夾删除awk.exe即可。如删除後出現HOST_AWK未定義情況,請前去http://ftp.gnu.org/gnu/gawk/ 下載下傳gawk,下載下傳完成後配置一個環境變量,名字是HOST_AWK,值是指向gawk.exe的完整路徑名(如:c:/gawk/gawk.exe)。

2. unicode編碼問題。

必須保證所有頭檔案與代碼檔案均由ascii碼編寫,使用unicode将導緻無法正确編譯代碼。

3. android.mk編輯問題。

確定所有要編譯的檔案都填寫到了工程路徑下的android.mk檔案中,如未填寫會造成資料類型及函數未定義等編譯錯誤。

4其它

對cocos2d-x中的記憶體管理機制表示鴨梨很大。據說作者為了照顧java程式員制作了這個功能,引擎會自動回收記憶體,C的程式員用起來相當不習慣。注意有個函數是retain……