本方法适用于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目录下找到打好的包
1、使用ndk完成c++动态链接库的编译,生成so文件(可以使用方法一的命令行,中间会生成so,忽略命令行后面执行的内容,也可以执行ndk命令,具体方法我还没有试过)
2、使用eclipse完成java项目的打包(其中要用到上一步用到的so文件),详细方法见下面详细步骤
详细步骤:
配置android.mk
关于android.mk文件的功能和作用,可以百度补充一下,在这里,我们可以简单的理解它(们)为编译c++动态链接库所需要的配置文件,也就是告诉ndk编译相关的信息,主要包括一下几个内容:
1、生成什么(动态库.os、静态库.a、可执行文件),它的名字和文件名
2、需要编译哪些文件
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,跟着他的步骤就可以完成打包了。
原文链接:https://www.f2er.com/cocos2dx/341983.html