本文整個(gè)部署過程無需下載及安裝使用Cygwin環(huán)境, 以下部署過程需要用到的程序及版本
請(qǐng)注意下載對(duì)應(yīng)你系統(tǒng)的版本, 64位系統(tǒng)請(qǐng)保證后文全系使用64位程序, 以免遇到不必要的麻煩
1.JDK&JRE JAVA運(yùn)行時(shí)及開發(fā)包
2.ADT 是Eclipse的一個(gè)插件,這一步是為了管理安卓開發(fā)庫(kù)
http://developer.android.com/sdk/index.html
作為新手, 請(qǐng)下載ADT Bundle For Windows, 這個(gè)版本已經(jīng)包含
ADK(安卓開發(fā)包), CDT(Eclipse的C/C++開發(fā)插件)及對(duì)應(yīng)的Eclipse, 可以避免第一次部署出現(xiàn)的各種煩心!
3.NDK 只有ADT已經(jīng)可以運(yùn)行普通的Andriod程序,但是如果需要編譯C/C++程序, 還需要NDK
http://developer.android.com/tools/sdk/ndk/index.html
4. cocos2dx 2.0.4版本
準(zhǔn)備SDK API
下載好ADT后解壓, 有如下目錄
eclipse\ <- 開發(fā)環(huán)境
sdk\ <- Andriod SDK
SDK Manager.exe <-- Android開發(fā)包管理器, 由于Andriod版本較多, 所以此管理器可以方便開發(fā)者選擇部署目標(biāo)機(jī)器
打開SDK Manager在Android 2.2(API 8)里的 SDK Platform, Google APIs前打勾, 點(diǎn)擊右下角的Instal packages
如果感覺下載速度慢, 可以移步這里http://my.oschina.net/heguangdong/blog/17443, 選擇Andriod離線下載
這里是下載鏈接
http://dl-ssl.google.com/android/repository/google_apis-8_r02.zip
http://dl-ssl.google.com/android/repository/android-2.2_r02-windows.zip
https://dl-ssl.google.com/android/repository/usb_driver_r04-windows.zip
把a(bǔ)ndroid開頭的文件解壓到platforms目錄下
把goole_apis開頭的文件解壓到add-ons目錄下
把usb_driver_r03-windows.zip解壓到usb_driver目錄下。
Eclipse導(dǎo)入工程
打開Eclipse
導(dǎo)入Cocos2dx例子工程:
Eclipse中File->New->Other...選擇Andriod Project from Existing Code
在Import Projects的Root Directory中導(dǎo)入D:\Develop\RevWar\sdk\cocos2d-2.0-x-2.0.4\samples\HelloCpp\proj.android\
注意, 不要選中 Copy project into workspace, 否則路徑編亂很難編譯成功
導(dǎo)入cocos2dx的java框架
在src目錄中new package, 輸入org.cocos2dx.lib, 在org.cocos2dx.lib的package中點(diǎn)Import-> FileSystem
選中目錄D:\Develop\RevWar\sdk\cocos2d-2.0-x-2.0.4\cocos2dx\platform\android\java\src\org\cocos2dx\lib\, 點(diǎn)選所有java文件
工程Properties->Builder->New->Program
在Main標(biāo)簽中填寫
填寫NDK編譯命令行 D:\Develop\android-ndk-r8e\ndk-build.cmd
點(diǎn)擊Browser Workspace選中當(dāng)前工程,出現(xiàn)${workspace_loc:/HelloCpp}
切換到Environment標(biāo)簽中填寫
新建NDK_MODULE_PATH 填寫D:\Develop\RevWar\sdk\cocos2d-2.0-x-2.0.4\;D:\Develop\RevWar\sdk\cocos2d-2.0-x-2.0.4\cocos2dx\platform\third_party\android\prebuilt\
修改cocos2dx的Android.mk, diff如下
@@ -153,6 +153,7 @@
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_jpeg_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_libxml2_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_libtiff_static
+LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static
# define the macro to compile through support/zip_support/ioapi.c
LOCAL_CFLAGS := -DUSE_FILE32API
@@ -164,3 +165,4 @@
$(call import-module,libpng)
$(call import-module,libxml2)
$(call import-module,libtiff)
+$(call import-module,CocosDenshion/android)
F&Q
andriod-8問題
修改D:\Develop\RevWar\sdk\cocos2d-2.0-x-2.0.4cocos2dx\platform\android\java\project.properties中的target=android-8改成你需要的版本
resources.ap_ does not exist
assert目錄中有資源出問題, 排查即可
例如: cocos2d-2.0-x-2.0.4\samples\TestCpp\proj.android\assets\Images\*.pvr.gz
啟動(dòng)Android模擬器時(shí)的Failed to allocate memory: 8問題
調(diào)整內(nèi)存值,請(qǐng)求內(nèi)存太大導(dǎo)致
api版本過低導(dǎo)致JAVA Symbol未定義問題
setEGLContextClientVersion undefined
api8(andriod 2.2)后的版本, 才支持openGL es 2.0
自己做工程遇到的問題D:\Develop\RevWar\sdk\cocos2d-2.0-x-2.0.4\/cocos2dx/platform/android/jni/JniHelper.h:28:18: fatal error: string: No such file or directory
將cocos2dx例子中的Application.mk拷過來, 修改下內(nèi)部名稱即可
調(diào)試請(qǐng)盡量使用真機(jī), 模擬器速度很慢
小米2默認(rèn)只能管理文件, 無法用adb 連接, 因此需要安裝驅(qū)動(dòng), USB驅(qū)動(dòng)直接在插入電腦后的虛擬盤里找.. 這個(gè)太坑了..
保證每次都能部署最新的程序
請(qǐng)執(zhí)行每次Clean, Build project, Debug. 真機(jī)上在需要時(shí), 會(huì)彈出安裝...
Android啟動(dòng)日志
帶有ADT的Eclipse中有一個(gè)logcat窗口, 里面有系統(tǒng)及程序本身的日志, 可以做過濾,方便檢查問題. 如需自己打日志, 可以使用cocos2dx中的LOGD宏來做, 原型是__android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)
Remark
添加assert后, F5刷新后再編譯
NDK build時(shí),默認(rèn)從工程的jni目錄開始
Andriod.mk的import 原則$(call import-module,模塊名) 這里的模塊名必須與目錄名, 模塊make file中的名稱報(bào)紙一致
參考文章
http://www.cnblogs.com/ybgame/archive/2012/06/07/2540693.html
發(fā)文時(shí), Andriod Studio已經(jīng)發(fā)布了一段時(shí)間, 雖然是測(cè)試版, 但將代表未來更方便的Andriod發(fā)布工具