注意:本文的Cocos2d-x的版本是2.2.3,更高版本可能會略有不同,低版本者不建議參考
首先需要配置XCODE環境
下載Cocos2d-x
然后下載Cocos2d-x的整個源碼:http://www.cocos2d-x.org/download 選擇2.2.3的版本
下載后解壓,建議移動到文稿里
2.2.3的版本開始,Cocos2d-x將不能通過XCODE內置模板創建,而是必須通過腳本創建項目
這里,我的源碼路徑是:/Users/mac/Documents/Projects/cocos2d-x-2.2.3/,以下所有相同路徑都可以根據您自己放置Cocos2d-x源碼的位置來替換。
現在利用其自帶的腳本,新建一個項目
新建項目
首先終端進入: cd /Users/mac/Documents/Projects/cocos2d-x-2.2.3/tools/project-creator
然后執行腳本:./create_project.py -project MyGame -package com.wangtao.mygame -language cpp
這里的MyGame是項目名稱,請根據自己需求改變
這里的com.wangtao.mygame是包名,請根據自己需求改變。改變后的包名將在之后的XCODE和ECLIPSE兩個環境中同時生效。
腳本執行完成后,新的項目在這個路徑下:/Users/mac/Documents/Projects/cocos2d-x-2.2.3/projects
找到這個項目,進入后尋找proj.ios文件夾找到MyGame.xcodeproj打開就可以進入XCODE開發游戲了。
Android環境配置
Eclipse for mac 下載地址:http://eclipse.org/downloads/
Android SDK for mac下載地址:http://developer.android.com/sdk/index.html
NDK下載地址:http://developer.android.com/tools/sdk/ndk/index.html
ADT下載地址:http://dl.google.com/android/adt/22.6.2/adt-bundle-mac-x86_64-20140321.zip
請注意下載Mac版本,並匹配您系統是32位還是64位。幾個包都比較大,下載速度比較慢,建議使用支持斷點續傳的工具下載。
配置環境變量
為了讓編譯器在以后能根據名稱簡稱快速定位到其所在路徑,需要將他們的映射關系配置並保存。
打開“終端”,然后輸入 pico .bash_profile 回車
然后手動將以下路徑輸入進去:
export ANDROID_SDK_ROOT=/Users/mac/Documents/Projects/sdk/
export ANDROID_NDK_ROOT=/Users/mac/Documents/Projects/android-ndk-r9d/
export COCOS2DX_ROOT=/Users/mac/Documents/Projects/cocos2d-x-2.2.3/
export NDK_ROOT=/Users/mac/Documents/Projects/android-ndk-r9d/
export PATH=$PATH:$ANDROID_SDK_ROOT
export PATH=$PATH:$ANDROID_NDK_ROOT
注意以上輸入過程中,“=/”左右都不能有空格,否則會配置失敗
輸入完成之后,Control+x 進行保存,然后提示是否保存,輸入 y ,最后回車即可!
配置路徑完成之后建議監測一下是否配置正確
檢驗路徑步驟: 關閉你的“終端”,重新打開,如果之前路徑配置有問題,那么重新打開的“終端”將出現如下提示:-bash: exoort: command not found 如果沒有此類提示,說明路徑配置完成。
建立Android項目
進入Eclipse的文件夾,啟動Eclipse,新建Project,選擇Android Project from Existing Code,點擊Browse,選擇/Users/mac/Documents/Projects/cocos2d-x-2.2.3/projects下您要導入的游戲項目,進入對應的游戲文件夾后,選擇proj.android文件夾,然后點擊Open。
項目導入進來后,可以看到assets文件下的資源就是XCODE中對應的資源,以后不需要來回拷貝資源,大大節省項目移植到Android平台的時間。
此外項目自動生成了入口Activity,繼承自Cocos2dxActivity。但如果是第一次導入項目,這個庫是沒有的,需要導入。方法是,再新建一個Project,選擇Android Project from Existing Code,點擊Browse,選擇/Users/mac/Documents/Projects/cocos2d-x-2.2.3/cocos2dx/platform/android文件夾。
在最終編譯之前,需要特別注意的是:
1、檢查Eclipse中本項目的jni/hello/cpp/main.cpp中的代碼,默認情況下,上面inlude了一個“HelloWolrdScene”,如果您的游戲刪掉了這個類,那這里也要對應的去掉這個include
2、檢查build_native.sh中,在# options下需要添加NDK_ROOT :NDK_ROOT= "/Users/mac/Documents/Projects/android-ndk-r9d"
最終編譯和運行
進入終端,根據項目中的build_native.sh位置,直接執行這個編譯腳本,如:
/Users/mac/Documents/Projects/cocos2d-x-2.2.3/projects/MyGame/proj.android/build_native.sh
這次編譯目的是生成.so文件,並打包到Android的APK中,如果編譯成功會看到如下文字
[armeabi] SharedLibrary : libcocos2dcpp.so
[armeabi] Install : libcocos2dcpp.so => libs/armeabi/libcocos2dcpp.so
如果編譯出錯,則會顯示對應的錯誤原因,強烈建議先保證在XCODE中編譯通過的前提下,再進行android的.SO編譯。
編譯通過后,點擊項目的根節點,並按下F5鍵,可以看到項目中多了libs/armeabi/libcocos2dcpp.so。
最后通過Eclipse的RUN功能,就可以直接生成APK了。
權限給予
mac 下終端訪問文件出現“Permission Denied”解決方案:
一個文件有3種權限,讀、寫、可執行,你這個文件沒有可執行權限,需要加上可執行權限。
1. 終端下先 cd到該文件的目錄下
2. 執行命令 chmod a+x ./文件名
NDK不兼容
在編譯過程中,可能遇到這樣的錯誤提示:format not a string literal and no format arguments [-Werror=format-security]
原因:
android-ndk-r9與Eclipse的版本不兼容問題
方案之一(我搜到的):
在對應項目的proj.android/jni/Application.mk添加一句話
APP_CFLAGS += -Wno-error=format-security
爽快的雙平台同時開發
推薦在XCODE中進行游戲開發,調試。每一次需要生成安卓APK的時候,先通過終端執行build_native.sh腳本,然后Eclipse的項目根目錄點擊F5刷新.so后文件后編譯打包一氣呵成。
唯一麻煩的一點就是iphone和android手機可能需要來回插拔,但這對游戲開發者已經是最高的跨平台開發效率了。
本文由王燾原創,轉載請注明原文地址。
