cocos2dx安卓打包与调试(适用quick3.5)

前端之家收集整理的这篇文章主要介绍了cocos2dx安卓打包与调试(适用quick3.5)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

方法适用于quick3.5项目的打包,在其他版本的cocos2dx中可能部分适用。

需要的工具android ndk、android sdk、ant

安装以上工具的方法可以自行百度,安装完毕后,在quick-3.5目录下执行命令行,运行setup.py(需要安装python),完成项目的配置(告诉cocos上面这些工具在哪,打包的时候,cocos就会找到并使用它们)


步骤概览:

准备工作:

1、将资源文件放到相应的位置:quick3.5 位于frameworks/runtime-src/proj.android/asserts 里面有一个res和一个src,res为资源文件,src为脚本文件

2、配置android.mk文件(告诉编译器编译的信息,用于生成so文件),详细方法见下面详细步骤

打包工作:

方法一、命令行方法,只试用于打包,不具有调试功能,适合配合脚本进行自动打包

1、进入cocos2dx项目根目录,进入命令行

2、输入指令:cocos compile -p andriod

3、等待运行结束,可以在runtime/android目录下找到打好的包

方法二、elicpse方法,用于调试

1、使用ndk完成c++动态链接库的编译,生成so文件(可以使用方法一的命令行,中间会生成so,忽略命令行后面执行的内容,也可以执行ndk命令,具体方法我还没有试过)

2、使用eclipse完成java项目的打包(其中要用到上一步用到的so文件),详细方法见下面详细步骤


详细步骤:

配置android.mk

关于android.mk文件功能和作用,可以百度补充一下,在这里,我们可以简单的理解它(们)为编译c++动态链接库所需要的配置文件,也就是告诉ndk编译相关的信息,主要包括一下几个内容

1、生成什么(动态库.os、静态库.a、可执行文件),它的名字和文件

2、需要编译哪些文件

3、包含哪些引用目录(.h文件的目录和被引用文件的目录)

4、要引用哪些动态库和静态库

5、其他信息

让我们来看一个android.mk 文件,这个mk文件时最主要的,它位于frameworks\runtime-src\proj.android\jni,用于将项目编译成动态链接库,给java进行调用。这个动态链接库会调用cocos2dx引擎的静态库(那些静态库有各自的mk文件

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := cocos2dlua_shared

LOCAL_MODULE_FILENAME := libcocos2dlua

LOCAL_SRC_FILES := \
../../Classes/AppDelegate.cpp \
../../Classes/ide-support/SimpleConfigParser.cpp \
hellolua/main.cpp

LOCAL_C_INCLUDES := \
$(LOCAL_PATH)/../../Classes/protobuf-lite \
$(LOCAL_PATH)/../../Classes/runtime \
$(LOCAL_PATH)/../../Classes \
$(LOCAL_PATH)/../../../cocos2d-x/external \
$(LOCAL_PATH)/../../../cocos2d-x/tools/simulator/libsimulator/lib



# _COCOS_HEADER_ANDROID_BEGIN
# _COCOS_HEADER_ANDROID_END

LOCAL_STATIC_LIBRARIES := cocos2d_lua_static
LOCAL_STATIC_LIBRARIES += cocos2d_simulator_static

# _COCOS_LIB_ANDROID_BEGIN
LOCAL_STATIC_LIBRARIES += quick_libs_static
# _COCOS_LIB_ANDROID_END

include $(BUILD_SHARED_LIBRARY)

$(call import-module,scripting/lua-bindings/proj.android)
$(call import-module,tools/simulator/libsimulator/proj.android)

# _COCOS_LIB_IMPORT_ANDROID_BEGIN
$(call import-module,proj.android)
# _COCOS_LIB_IMPORT_ANDROID_END


里面几个重要的字段:

LOCAL_MODULE := cocos2dlua_shared 是这个动态链接库的名字,但不是文件名,在被调用时要用这个名字

LOCAL_MODULE_FILENAME := libcocos2dlua 这个是文件

LOCAL_SRC_FILES := \后面跟着的是这个项目的cpp文件,虽然项目主体,但是只有三个文件,因为这个项目是用lua写的,本身只需要一个cpp文件,而cocos2dx的引擎通过静态库调用,最终也会被编译进来

LOCAL_C_INCLUDES := \后面跟着几个文件夹,是.h文件以及调用的静态库文件所在的目录,编译器会到相应的位置找到他们

LOCAL_STATIC_LIBRARIES := cocos2d_lua_static 这个关键字后面跟着的就是静态库的名字,这里只调用了三个静态库,这三个静态库亦会将cocos2dx引擎整个间接地调用进来

include $(BUILD_SHARED_LIBRARY) 这句比较关键,决定了要将该项目编译成动态链接库,如果是静态,中间就是STATIC


对于一个新的项目,cocos2dx会帮我们生成这个文件,但是如果我们改动了项目的c++部分,比如增加了几个cpp文件,那么,就要在

LOCAL_SRC_FILES := \ 和LOCAL_C_INCLUDES := \ 这两个字段下将他们包含进来,如果还改动了静态库调用等,那么也就是在相应的位置做改动

如果我们改动了cocos2dx 的引擎,那么就要找到相应的android.mk文件修改里面的配置,如果配置不正确,在编译的时候会提示错误,可以根据相应的错误调整配置


使用eclipse完成java项目的打包

这个过程在网上有不少现成的教程可以找,基本包括以下几个步骤:

1、导入当前项目的java项目,将根目录下frameworks\runtime-src\proj.android 这个文件夹导入eclipse。操作方法是右键eclipse的资源窗口选择import,在弹出的窗口中选android文件夹下的existing android code into workspace,选中要导入的文件夹,不选择Copy project to workSpace

2、导入之后会发现这个项目报了一堆错误,这是因为cocos2dx的java库没有被添加,java库位于quick3.5目录下cocos\platform\android\java这个位置,按照上面同样的方法将其导入,可能不同版本的位置会不同,可以找一下。

3、导入之后eclipse中选择第一个项目的property,在project References 中勾选libcocos2dx这个项目,然后在resource中选择android,library中添加这个lib。这里有一个坑,如果lib和项目所在盘符不一样,会导致无法找到库,这个在添加的时候是不会提示的,但是过会library那边就会变成一个叉叉。所以lib和项目要放在同一个盘下。同样的问题在命令行打包的时候也会出现。

4、完成以上配置之后就可以运行调试项目了,也可以导出项目(右击,选择androi tools),export singed application pakage,跟着他的步骤就可以完成打包了。

猜你在找的Cocos2d-x相关文章