cocos3.10游戏移植到安卓平台教程(c++版本)
流程简介
现在Cocos3.10移植游戏到安卓平台还是⽐较简化了,你只需要下载好SDK,JDK,NDK,ANT,配置好坏境变量,安装好JDK。再更改⼀下android.MK⽂件,你就直接可以进⾏编译了,当然编译当中也许会因为C++平台原因,NDK⽤的G++编译器,和VS的不⼀样,所以会出⽐较多的错误,只要你有耐⼼,就可以最终编译成功。
1. 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)
android学习教程
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⽂件了,需要⼤⼤的耐⼼,所以加油吧.