大渣好,我是PuzzledBoy,今年大一,我是一名独立游戏开发者。这是我的第二篇博客,欢迎你们的来袭。。。(这话有点不对啊= =)
额,总之这会是一篇比较长的文章,总结一下我前两天将cocos2dx3.2 项目移植到渣卓平台出现的各种问题(我恨渣卓)。
一来是相当于自己复习一下酱紫,而来就是写给你们看啦啦啦~(废话)。
当然也会说一点其他的内容,就算你和标题没有任何关系(好像有语病。。。)也是可以往下看的,说不定会学到一点其他的东西。呵呵呵呵呵。。。。。
首先第一个部分是把C++工程打包成apk
//============================================================================渣卓黑分隔线=============================================================================
首先呢,C++ 工程移植到渣卓,哦不,安卓平台= =。 当然是要跟android ndk扯上一点关系了,详细的介绍度娘说的很清楚了 博主就懒得再复制黏贴了。咳咳。。。
哎这里先说一下几个概念...
.o 目标文件,相当与window下的.obj文件。
.so (shared object) 共享库,相当于window下的dll。
.a 静态库,用于静态链接,相当于windoiw的静态lib了。
其实概念跟windos上是相同的,不知道windows上的静态库和动态库是什么的童鞋去问度娘吧。
然后,博主的项目用到了第三方库(lua)(不是引擎官方的那个lua,我只是纯粹用lua来做配置文件),酱紫就有个问题了,如果没有引入第三方库的话,我们可以直接更改Android.mk文件的配置信息然后用命令行来进行android打包。
首先我们打开Android.mk文件,路径是 “ 你的工程目录/proj.android/jni/Android.mk "
这是一个脚本文件,先别急着说看不懂。首先mk文件是用来向android ndk描述你的C++源代码的。其次我们来聊一下里面几个关键字的意义(详细的结构由于篇幅就不复制度娘的了,可以自己去查)。
LOCAL_PATH := $(call my-dir) //call my-dir就是你的mk文件所在的目录。
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) //你可以打开到相应的文件夹去看看,里面有一个Android.mk文件耶
//好了,你一定懂了这里的路径是用来干吗了的吧 = =。
LOCAL_MODULE := cocos2dcpp_shared //模块类型,这里是共享库。
LOCAL_MODULE_FILENAME := libcocos2dcpp // 模块的名字。
LOCAL_SRC_FILES := hellocpp/main.cpp \
../../Classes/AppDelegate.cpp \
# 省略了很多代码 //这里是用来描述你的cpp文件的,写上你的cpp路径就好啦。
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes
LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../cocos2d //顾名思义,就是头文件的目录啦。
LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static
# LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static
# LOCAL_WHOLE_STATIC_LIBRARIES += cocosbuilder_static
# LOCAL_WHOLE_STATIC_LIBRARIES += spine_static
# LOCAL_WHOLE_STATIC_LIBRARIES += cocostudio_static
# LOCAL_WHOLE_STATIC_LIBRARIES += cocos_network_static
# LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static //这里指明的是当前模块需