本文整個部署過程無需下載及安裝使用Cygwin環境, 以下部署過程需要用到的程序及版本
請注意下載對應你系統的版本, 64位系統請保證后文全系使用64位程序, 以免遇到不必要的麻煩
1.JDK&JRE JAVA運行時及開發包
2.ADT 是Eclipse的一個插件,這一步是為了管理安卓開發庫
http://developer.android.com/sdk/index.html
作為新手, 請下載ADT Bundle For Windows, 這個版本已經包含
ADK(安卓開發包), CDT(Eclipse的C/C++開發插件)及對應的Eclipse, 可以避免第一次部署出現的各種煩心!
3.NDK 只有ADT已經可以運行普通的Andriod程序,但是如果需要編譯C/C++程序, 還需要NDK
http://developer.android.com/tools/sdk/ndk/index.html
4. cocos2dx 2.0.4版本
準備SDK API
下載好ADT后解壓, 有如下目錄
eclipse\ <- 開發環境
sdk\ <- Andriod SDK
SDK Manager.exe <-- Android開發包管理器, 由于Andriod版本較多, 所以此管理器可以方便開發者選擇部署目標機器
打開SDK Manager在Android 2.2(API 8)里的 SDK Platform, Google APIs前打勾, 點擊右下角的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
把android開頭的文件解壓到platforms目錄下
把goole_apis開頭的文件解壓到add-ons目錄下
把usb_driver_r03-windows.zip解壓到usb_driver目錄下。
Eclipse導入工程
打開Eclipse
導入Cocos2dx例子工程:
Eclipse中File->New->Other...選擇Andriod Project from Existing Code
在Import Projects的Root Directory中導入D:\Develop\RevWar\sdk\cocos2d-2.0-x-2.0.4\samples\HelloCpp\proj.android\
注意, 不要選中 Copy project into workspace, 否則路徑編亂很難編譯成功
導入cocos2dx的java框架
在src目錄中new package, 輸入org.cocos2dx.lib, 在org.cocos2dx.lib的package中點Import-> FileSystem
選中目錄D:\Develop\RevWar\sdk\cocos2d-2.0-x-2.0.4\cocos2dx\platform\android\java\src\org\cocos2dx\lib\, 點選所有java文件
工程Properties->Builder->New->Program
在Main標簽中填寫
填寫NDK編譯命令行 D:\Develop\android-ndk-r8e\ndk-build.cmd
點擊Browser Workspace選中當前工程,出現${workspace_loc:/HelloCpp}
切換到Environment標簽中填寫
新建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
啟動Android模擬器時的Failed to allocate memory: 8問題
調整內存值,請求內存太大導致
api版本過低導致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拷過來, 修改下內部名稱即可
調試請盡量使用真機, 模擬器速度很慢
小米2默認只能管理文件, 無法用adb 連接, 因此需要安裝驅動, USB驅動直接在插入電腦后的虛擬盤里找.. 這個太坑了..
保證每次都能部署最新的程序
請執行每次Clean, Build project, Debug. 真機上在需要時, 會彈出安裝...
Android啟動日志
帶有ADT的Eclipse中有一個logcat窗口, 里面有系統及程序本身的日志, 可以做過濾,方便檢查問題. 如需自己打日志, 可以使用cocos2dx中的LOGD宏來做, 原型是__android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)
Remark
添加assert后, F5刷新后再編譯
NDK build時,默認從工程的jni目錄開始
Andriod.mk的import 原則$(call import-module,模塊名) 這里的模塊名必須與目錄名, 模塊make file中的名稱報紙一致
參考文章
http://www.cnblogs.com/ybgame/archive/2012/06/07/2540693.html
發文時, Andriod Studio已經發布了一段時間, 雖然是測試版, 但將代表未來更方便的Andriod發布工具