使用cocos2d-x c++ Android静态库

在用cocos2d-x做Android开发时,每次clean后都会需要再次编译coco2d-x的库,十分耗时。

这里给出一个直接使用静态库而不用每次都编译源码的方法:

1\ 首先找到一个cocos2d-x的测试项目(如cpp_test),进行一次编译。完成后,在proj.android/obj/local目录下可以找到中间过程中生成的所有静态库文件。

把这些静态库文件(带上ABI目录)复制出来,放到一个新的目录(如:cclib)中。

2\ 在cclib中创Android.mk文件,文件内容见代码附1.

3\ 定义环境变量 CC_SRC_ROOT 为cocos2d源码目录(即cocos与external的上层目录)

在编译你的项目时依赖cclib即可,不需要依赖cocos2d目录下的Android.mk

附cclib/Android.mk内容:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := cc_static
LOCAL_MODULE_FILENAME := libcc 

LOCAL_EXPORT_C_INCLUDES := $(CC_SRC_ROOT)/cocos                     $(CC_SRC_ROOT)/cocos/.                     $(CC_SRC_ROOT)/cocos/..                     $(CC_SRC_ROOT)/cocos/platform                     $(CC_SRC_ROOT)/cocos/base                     $(CC_SRC_ROOT)/external                     $(CC_SRC_ROOT)/external/tinyxml2                     $(CC_SRC_ROOT)/external/unzip                     $(CC_SRC_ROOT)/external/chipmunk/include/chipmunk                     $(CC_SRC_ROOT)/external/xxhash                     $(CC_SRC_ROOT)/external/nslog                     $(CC_SRC_ROOT)/external/poly2tri                     $(CC_SRC_ROOT)/external/poly2tri/common                     $(CC_SRC_ROOT)/external/poly2tri/sweep 		    $(CC_SRC_ROOT)/cocos/platform/android 		    $(CC_SRC_ROOT)/cocos/audio/include 		    $(CC_SRC_ROOT)/external/curl/include/android 		    $(CC_SRC_ROOT)/external/websockets/include/android 		    $(CC_SRC_ROOT)/cocos/editor-support 		    $(CC_SRC_ROOT)/external/Box2D 		    $(CC_SRC_ROOT)/external/flatbuffers 		    $(CC_SRC_ROOT)/external 

LOCAL_CFLAGS   :=  -DUSE_FILE32API -fexceptions

LOCAL_CPPFLAGS := -Wno-deprecated-declarations -Wno-extern-c-compat

LOCAL_EXPORT_CFLAGS   := -DUSE_FILE32API -fexceptions

LOCAL_EXPORT_CPPFLAGS := -Wno-deprecated-declarations -Wno-extern-c-compat

LOCAL_EXPORT_LDLIBS := -lGLESv2                        -llog                        -landroid 		       -lGLESv1_CM                        -lEGL 		       -lOpenSLES

# define the macro to compile through support/zip_support/ioapi.c

LOCAL_WHOLE_STATIC_LIBRARIES := cocos_freetype2_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_png_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_jpeg_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_tiff_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_webp_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_chipmunk_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_zlib_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_curl_static
LOCAL_WHOLE_STATIC_LIBRARIES += websockets_static

LOCAL_WHOLE_STATIC_LIBRARIES += flatbuffers_static
LOCAL_WHOLE_STATIC_LIBRARIES += libaudioengine_static
LOCAL_WHOLE_STATIC_LIBRARIES += libbox2d_static
LOCAL_WHOLE_STATIC_LIBRARIES += libcocos2d_static
LOCAL_WHOLE_STATIC_LIBRARIES += libcocos2dandroid_static
LOCAL_WHOLE_STATIC_LIBRARIES += libcocos2dxinternal_static
LOCAL_WHOLE_STATIC_LIBRARIES += libcocos3d_static
LOCAL_WHOLE_STATIC_LIBRARIES += libcocosbuilder_static
LOCAL_WHOLE_STATIC_LIBRARIES += libcocosdenshion_static
LOCAL_WHOLE_STATIC_LIBRARIES += libcocostudio_static
LOCAL_WHOLE_STATIC_LIBRARIES += libextension_static
LOCAL_WHOLE_STATIC_LIBRARIES += libnetwork_static
LOCAL_WHOLE_STATIC_LIBRARIES += libspine_static
LOCAL_WHOLE_STATIC_LIBRARIES += libui_static

include $(BUILD_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := flatbuffers_static
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/flatbuffers.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := libaudioengine_static
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libaudioengine.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := libbox2d_static
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libbox2d.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := libcocos2d_static
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libcocos2d.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := libcocos2dandroid_static
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libcocos2dandroid.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := libcocos2dxinternal_static
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libcocos2dxinternal.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := libcocos3d_static
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libcocos3d.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := libcocosbuilder_static
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libcocosbuilder.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := libcocosdenshion_static
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libcocosdenshion.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := libcocostudio_static
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libcocostudio.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := libcpufeatures_static
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libcpufeatures.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := libextension_static
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libextension.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := libnetwork_static
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libnetwork.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := libspine_static
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libspine.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := libui_static
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libui.a
include $(PREBUILT_STATIC_LIBRARY)

#==============================================================
$(call import-module,freetype2/prebuilt/android)
$(call import-module,png/prebuilt/android)
$(call import-module,zlib/prebuilt/android)
$(call import-module,jpeg/prebuilt/android)
$(call import-module,tiff/prebuilt/android)
$(call import-module,webp/prebuilt/android)
$(call import-module,chipmunk/prebuilt/android)
$(call import-module,curl/prebuilt/android)
$(call import-module,websockets/prebuilt/android)
时间: 2024-08-30 04:45:01

使用cocos2d-x c++ Android静态库的相关文章

[cocos2dx笔记004] android增加静态库工程

(基于2.2.2版本) 这步比较麻烦,不像vs2013那样好设置.参考了很多文章.还是不能解决问题.只有慢慢摸索了.在这里贴出来,希望能让大家能少走点弯路. 还是其于前面的文章提到的mylib这个例子.[cocos2dx笔记003] Vs2013增加静态库工程首先进到external\mylib,用文本编辑器打Android.mk 并修改图中圈中的部分 修改结果如下 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE :

[付费视频]Delphi视频Android开发使用静态库(A)和动态库(SO)

关于本视频:前阵子接到一个委托,解决Delphi开发Android程序中串口通信的问题,厂家那边提供了c文件,需要翻译成delphi可用,翻译倒是比较简单.不过后来翻译读写ic卡单元的时候进行不下去了,delphi还提供的不太完整,而且底层提供的也有些bug,然后就有了直接使用.a和.so文件的想法,后来花不少精力,查阅资料和调试,终于调通了.特意录制本视频希望能为大家解决一些实际问题.顺便赚点零花钱. 视频录制过程间隔时间比较长,拼接起来的,观看过程中会有一些停顿现象.还有普通话太烂,请大家一

android开发 NDK 编译和使用静态库、动态库 (转)

在eclipse工程目录下建立一个jni的文件夹 在jni文件夹中建立Android.mk和Application.mk文件 Android.mk文件: Android提供的一种makefile文件,用来指定诸如编译生成so库名.引用的头文件目录.需要编译的.c/.cpp文件和.a静态库文件等.详见附件中的Android.mk. Application.mk文件: 定义了项目的一些细节,比如APP_ABI := x86(编译X86平台库).APP_PLATFORM := android-9(使用

android ndk-build 编译静态库libxx.a 以及Android studio openssl 静态库配置(cmake)

android ndk-build 编译静态库libxx.a 需求场景: 目前有安卓编码好的现在的openssl的两个.a,我们需要调用openssl的函数,并把功能再封装成.a; 这样使用时,在android studio jni项目 cmake 里面,需要先引用openssl的.a再引用 上面封装的.a; 如果使用so,那么,直接在android studio jni项目的 cpp里面直接调用openssl的方法,对外提供jni java接口,打包成so即可: 先来说用ndk-build 打

android开发 NDK 编译和使用静态库、动态库

在eclipse工程目录下建立一个jni的文件夹. 在jni文件夹中建立Android.mk和Application.mk文件. Android.mk文件: Android提供的一种makefile文件,用来指定诸如编译生成so库名.引用的头文件目录.需要编译的.c/.cpp文件和.a静态库文件等.详见附件中的Android.mk. Application.mk文件: 定义了项目的一些细节,比如APP_ABI := x86(编译X86平台库).APP_PLATFORM := android-9(

[cocos2dx笔记004] android添加?静态库project

(基于2.2.2版本号) 这步比較麻烦,不像vs2013那样好设置.參考了非常多文章.还是不能解决这个问题.仅仅有慢慢摸索了.在这里贴出来,希望能让大家能少走点弯路. 还是其于前面的文章提到的mylib这个样例.[cocos2dx笔记003] Vs2013添加?静态库project首先进到external\mylib,用文本编辑器打Android.mk 并改动图中圈中的部分 改动结果例如以下 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) L

eclipse+ADT使用第三方静态库及COCOS2d问题汇总

最近在搞安卓下的音视频通讯聊天,模块工程均完成后,需要由cocos搭起可执行程序的框架,在使用cocos及第三方静态库的过程中遇到了一些问题,由于自己是首次接触COCOS,再加上COCOS自身的问题,搞了整整一天,也终于算是搞透了: 环境:eclipse+ADT.cocos2d-x-3.5    一.cocos新工程的生成:    进入E:\OpenSource\cocos2d-x-3.5\tools\cocos2d-console\bin 按住shift键,右键空白处,打开命令窗口 使用命令c

Android导入第三方静态库.a编译成动态库.so

http://ikinglai.blog.51cto.com/6220785/1324985 在Android开发的时候,经常会使用到用c或c++编写的第三方的静态库.如果有源码的话,可以直接跟你自己的代码一去编译成动态库so,但是如果没有源码的话,你就必须在自己的动态库so里面将别人生成好的静态库导入进来一起编译了.我在编译的时候遇到了不少问题,我觉得有必要进行总结一下. 下面我以一个简单的实际例子来讲解如何在动态库中导入静态库. 静态库中的源代码有两个文件:static.h, static.

android studio 利用gradle和cmakelist生成c++静态库.a的方法总结

android生成静态库的方法有两种,一种是编辑android.mk文件,一种是编辑cmakelist文件.前一种没做研究,因为用的ide是android studio,所以直接利用gradle调用cmakelist文件完成静态库的生成,就是第二种方式.现总结如下: 文件需求: 1.cpp头文件源文件 2.cmakelists.txt文件 3.gen-gmath(生成静态库的module)下的build.gradle 4.hellojni(工程)下的settings.gradle 文件修改需求: