目前使用較多的Cocos2d-x開發平台是XCode,應該是由于大部分Cocos2d-x開發者都是iOS開發出生。但是當我們将XCode開發的Cocos2d-x工程釋出Android版本時,每次都需要使用ndk将Cocos2d-x的C++代碼編譯一遍,然後再用Eclipse打開,這個過程比較麻煩。于是本人嘗試在Eclipse中實時編譯Cocos2d-x的工程,即可以随時修改或添加java和android代碼後,點選Eclipse中的運作完成編譯。
參考的編譯Cocos2d-x的教程如下:
http://www.xuephp.com/main/detail.php?cid=32787
按以上的教程配置完成後,運作,依然會出現一些錯誤,如下:
錯誤1:
make: *** [clean-box2d_static-armeabi] Error 2
這是ndkr8e的一個bug
解決方案:
修改android-ndk-r8e/build/core/build-binary.mk
$(cleantarget): PRIVATE_CLEAN_FILES := ($(my)OBJS)
為:
$(cleantarget): PRIVATE_CLEAN_FILES :=$($(my)OBJS
錯誤2:
Type Symbol 'cocos2d' could not be resolved
沒有引入Cocos2d-x的源檔案
解決方案:
1.right click project, and select Properties\C/C++ General\Paths and Symbols\Source location. Click Link Folder, check the Link to a folder in the file system checkbox, and browse to the cocos2dxdirectory inside the $COCOS2DX_HOME folder.( the same way as add Classes)
2.right click project and select Properties\C/C++ General\Path and Symbols\GNU C++. Add$(COCOS2DX_HOME)/CocosDenshion/include
錯誤3:
Android NDK: WARNING: APP_PLATFORM android-14 is larger than android:minSdkVersion 8 in ./AndroidManifest.xml
最小SDK版本錯誤
解決方案:
将AndroidManifest.xml檔案中的android:minSdkVersion改為14
解決以上錯誤後,以後修改Java或C++代碼直接在Eclipse中運作即可。但是當我們在Eclipse中建立新的C++類仍然會報錯。因為還需要在工程中的Android.mk檔案中添加相應的C++類名。但是每次添加類都要修改Android.mk會比較麻煩。在這裡提一個解決方案,可以将Android.mk中的檔案改成*.cpp的形式,例如:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := game_shared
LOCAL_MODULE_FILENAME := libgame
FILE_LIST := $(wildcard $(LOCAL_PATH)/../../Classes/Actions/*.cpp)
FILE_LIST += $(wildcard $(LOCAL_PATH)/../../Classes/Constants/*.cpp)
FILE_LIST += $(wildcard $(LOCAL_PATH)/../../Classes/Helpers/*.cpp)
FILE_LIST += $(wildcard $(LOCAL_PATH)/../../Classes/GameObjects/*.cpp)
FILE_LIST += $(wildcard $(LOCAL_PATH)/../../Classes/Scenes/*.cpp)
FILE_LIST += $(wildcard $(LOCAL_PATH)/../../Classes/Singletons/*.cpp)
FILE_LIST += $(wildcard $(LOCAL_PATH)/../../Classes/JNICalls/*.cpp)
FILE_LIST += $(wildcard $(LOCAL_PATH)/../../Classes/*.cpp)
LOCAL_SRC_FILES := helloworld/main.cpp
LOCAL_SRC_FILES += $(FILE_LIST:$(LOCAL_PATH)/%=%)
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes
LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static cocosdenshion_static
include $(BUILD_SHARED_LIBRARY)
$(call import-module,CocosDenshion/android) $(call import-module,cocos2dx)
完成以上步驟,即可實作在Eclipse中實時編譯Cocos2d-x的工程。
個人部落格: http://blog.csdn.net/zhaoxy2850
本文位址: http://blog.csdn.net/zhaoxy2850/article/details/9341295 轉載請注明出處,謝謝!