1. 程式人生 > >cocos3.10遊戲移植到安卓平臺教程(c++版本)

cocos3.10遊戲移植到安卓平臺教程(c++版本)

流程簡介
現在Cocos3.10移植遊戲到安卓平臺還是比較簡化了,你只需要下載好SDK,JDK,NDK,ANT,配置好壞境變數,安裝好JDK。再更改一下android.MK檔案,你就直接可以進行編譯了,當然編譯當中也許會因為C++平臺原因,NDK用的G++編譯器,和VS的不一樣,所以會出比較多的錯誤,只要你有耐心,就可以最終編譯成功。

  1. 配置環境
    首先到網上下載SDK,JDK,NDK,ANT,如果你是懶得動型別,就到下面的連結去下載吧。
    連結:http://pan.baidu.com/s/1gfEviLX 密碼:cy06
    (1)下載後解壓將SDK從打包檔案裡面提取出來,然後找個資料夾把SDK,ANT,NDK都放在一起吧。然後現在需要安裝的只有JDK,安裝好JDK以後請大家自動搜尋JDK配置壞境,這裡我就不給大家傳送門了。
    (2)如果你已經確認好JDK壞境配置完畢,現在進入你下載的cocos2d進入到如下路徑:
    這裡寫圖片描述


    最好不要直接雙擊開啟setup檔案,這樣在檔案執行完後會自動關閉dos視窗,不能看到輸出資訊。我們在這個檔案路徑下面按住shift+滑鼠右鍵,然後在此執行命令視窗,輸入setup.py來執行此檔案。
    (3)按照dos視窗的指示逐個輸入SDK,NDK,ANT的路徑,下面是已經輸入好的情況:
    這裡寫圖片描述

    2.更改Android.mk檔案

    找到你的遊戲專案,開啟這個路徑D:\CocosToAndriod..\proj.android\jni,中間有些我自己的路徑省略了,就是你自己遊戲專案的proj.android\jni資料夾。對移植安卓有一點印象的朋友知道我們在移植的時候需要在MK檔案裡面新增我們的類名,我記得原來是一個一個手動新增的,現在好像3.0以上的版本不需要了,有更快捷的辦法。直接將MK檔案裡面的程式碼替換成如下:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/external)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/cocos)
LOCAL_MODULE := cocos2dcpp_shared
LOCAL_MODULE_FILENAME := libcocos2dcpp
FILE_LIST :
= hellocpp/main.cpp FILE_LIST += $(wildcard $(LOCAL_PATH)/../../Classes/*.cpp) LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%) LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes # _COCOS_HEADER_ANDROID_BEGIN # _COCOS_HEADER_ANDROID_END LOCAL_STATIC_LIBRARIES := cocos2dx_static # _COCOS_LIB_ANDROID_BEGIN # _COCOS_LIB_ANDROID_END include $(BUILD_SHARED_LIBRARY) $(call import-module,.) # _COCOS_LIB_IMPORT_ANDROID_BEGIN # _COCOS_LIB_IMPORT_ANDROID_END

你可以大致的對比一下原來的MK檔案,其實就是添加了幾句程式碼直接將Class檔案裡面的類檔案全部新增進來了。如果你還在遊戲專案中使用了iconv庫,那麼使用下面的程式碼,(iconv庫,不能在使用win32自帶的,要到網上下載一個andriod版本的。

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/external)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/cocos)
LOCAL_MODULE := cocos2dcpp_shared
LOCAL_MODULE_FILENAME := libcocos2dcpp
FILE_LIST := hellocpp/main.cpp    
FILE_LIST += $(wildcard $(LOCAL_PATH)/../../Classes/*.cpp)    
LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)   
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes
LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../cocos2d/external/iconv/include
# _COCOS_HEADER_ANDROID_BEGIN
# _COCOS_HEADER_ANDROID_END
LOCAL_STATIC_LIBRARIES := cocos2dx_static
LOCAL_STATIC_LIBRARIES += iconv_static
# _COCOS_LIB_ANDROID_BEGIN
# _COCOS_LIB_ANDROID_END
include $(BUILD_SHARED_LIBRARY)
$(call import-module,iconv)
$(call import-module,.)
# _COCOS_LIB_IMPORT_ANDROID_BEGIN
# _COCOS_LIB_IMPORT_ANDROID_END

從這個程式碼你也可以學習到如何新增第三方庫,然後將他們匯入到你的安卓專案中。
下面需要注意的是:
如果你的遊戲專案當中運用了很多C11的語法或者C14的語法,那麼請開啟AndroidAplication.mk檔案
如下:
這裡寫圖片描述
一定要加圖中的-std=c++14 或者-std=c++11,乾脆就直接寫++14吧··,反正我當時同事用到了14的東西,然後我始終編譯有錯,尼瑪後面才發現他能編譯通過是把這裡修改成了++14,寫++14應該就預設包含了11了。

3 用build_native.py建立APK檔案

如果你上面準備工作都做好了,那麼恭喜你,你將進入最後一步,但也是最蛋疼的一步。執行這個目錄下面的build_native.py檔案 (D:\CocosToAndriod\cplus\proj.android,我的路徑忽略到,重點是找到proj.android資料夾)。
跟我上面一樣的方法,在此處開啟命令列,然後執行build_native.py檔案。就會直接將你的遊戲進行APK打包啦,打包後會放在一個路徑,如果你打包成功你會看到輸出路徑。如果你並沒有那麼容易的打包,而是報了很多錯····那麼如下:
(1) 以為VS使用的C++編譯器,和安卓使用的G++編譯器是不同的,所以你在VS能編譯過的東西不一定能在G++下編譯通過,所以會報很多語法錯誤,特別是關於const的運用,以及左值引用,反正會出現各種語法錯誤,你需要一一去查詢。語法錯誤全部找出來,最後編譯成功,那麼你會得到下面圖片!
這裡寫圖片描述

結語:
因為之前看網上好多貼子都太老了,而且流程感覺不是很靠譜,就記錄了下這次的移植流程,希望能幫到正在使用3.x版本的朋友。最蛋疼的就是編譯APK檔案了,需要大大的耐心,所以加油吧.