在cocos2d引擎中安卓开发引用第三方库(如Opencv)

来源:互联网 发布:淘宝网费列罗巧克力 编辑:程序博客网 时间:2024/06/16 20:56
对于一个只懂得如何用Java去调用C++来实现某一种效果的初学者来说,Android编程中jni目录下的Android.mk这

样的配置文件几乎是完全有理解障碍的。
Android.mk是eclipse告诉它的插件NDK如何去编译C语言编写的源文件,有点像linux下编译C程序的makefile
,其实差不多。第一次见到其实是吓一跳的。不过还好上网能找到点相关的东西。其实Android编程一般是用不到Android.mk,因为Android的SDK已经功能很强大了,不需要C++什么事。但是对于游戏开发而言,为了保证应
用的高效等一些性能,还是经常要使用C++语言去写,或者说游戏开发引就是C++写的。好了,废话有点多,进
入正题吧!(PS:只是些基础,几个月以前接触的,不知道还记得多少,仅仅只是记录,怕忘了)
LOCAL_PATH := (callmydir)//C++include(CLEAR_VARS)
LOCAL_MODULE := opencv_java //引用的动态库的模块名,这里我需要调用opencv(开源图像处理平台)
的动态链接库,
LOCAL_SRC_FILES := libso/libopencv_java.so //库名
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)//下面是编译opencv的环境配置LOCAL_ARM_NEON := trueOpenCV_INSTALL_MODULES:=onOPENCV_CAMERA_MODULES:=off//在c++中调用opencv要想在eclipse中编译通过必须添加opencv的配置文件OpenCV.mk,不然NDK在编译的//是安卓版(只有在这个版本才有Opencv.mk)的include $(LOCAL_PATH)/../../sdk/native/jni/OpenCV.mk//这里就是我的游戏中用到的cocos2d游戏开发引擎需要的原文件目录$(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//C程序生成的动态链接库,其实在这个游戏中Android部分的代码就是在调用下面用//C++写的源程序生成的库,自己只是一个包装LOCAL_MODULE_FILENAME := libcocos2dcpp//这里就是需要编译C++的源程序文件了。LOCAL_SRC_FILES := hellocpp/main.cpp \               ../../Classes/AppDelegate.cpp \               ../../Classes/HelloWorldScene.cpp \               ../../Classes/GameLoadResource.cpp \               ../../Classes/GameDescribeSence.cpp \               ../../Classes/GameSence.cpp \               ../../Classes/makeMouse.cpp \               ../../Classes/makeMouseSence.cpp \               ../../Classes/mouse.cpp \               ../../Classes/OperationSence.cpp//这里是cpp文件引用的头文件所在的目录LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes \                $(LOCAL_PATH)/../../sdk/native/jni/include# _COCOS_HEADER_ANDROID_BEGIN# _COCOS_HEADER_ANDROID_END//LOCAL_LDLIBS    += -lm -llog //以静态的模式加载.a库文件LOCAL_STATIC_LIBRARIES := cocos2dx_staticLOCAL_SHARED_LIBRARIES := opencv_java# _COCOS_LIB_ANDROID_BEGIN# _COCOS_LIB_ANDROID_ENDinclude $(BUILD_SHARED_LIBRARY)include $(CLEAR_VARS)//加载.so库LOCAL_SHARED_LIBRARIES := opencv_java $(call import-module,.)//调用库# _COCOS_LIB_IMPORT_ANDROID_BEGIN# _COCOS_LIB_IMPORT_ANDROID_END这些写完之后,还需要在Application.mk中指定编译C++的编译选项比如:APP_CPPFLAGS := -frtti  -fexceptions -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -std=c++11 -fsigned-char我完全不懂它是什么意思,这里就不献丑了。
0 0