cocos2dx使用第三方.so库,并且.so库生成到libs/armeabi下面

来源:互联网 发布:网络剧 有毒 全集 编辑:程序博客网 时间:2024/06/14 03:47


最近cocos2dx移植到android的项目需要使用第三方.so库,cocos2dx-android本身有  libgame.so ,网上查了资料,把实现方法写下来,方便以后回忆


在调用移动mm的时候,需要调用移动mm 的.so文件,就将方法记录下来吧。


我就将使用移动MM 的两个.so库来写例子,大家如果写一个或多个,以此类推。

在cocos2dx-android项目/jni  下新建一个文件夹,就取名为prebuilt,在该文件夹内,放入第三方.so

如图所示:



在 jni/Android.mk 原有的内容基础上, 在最上面

include $(CLEAR_VARS)

后写入一下代码:


include $(CLEAR_VARS)

LOCAL_MODULE := identifyapp

LOCAL_SRC_FILES := prebuilt/$(TARGET_ARCH_ABI)/libidentifyapp.so

include $(PREBUILT_SHARED_LIBRARY)

LOCAL_SHARED_LIBRARIES := identifyapp


include $(CLEAR_VARS)

LOCAL_MODULE := casdkjni

LOCAL_SRC_FILES := PREBUILT/$(TARGET_ARCH_ABI)/libcasdkjni.so

include $(PREBUILT_SHARED_LIBRARY)

LOCAL_SHARED_LIBRARIES := casdkjni


解释:

LOCAL_MODULE : 这个是模块的名称,在其他地方调用该名称的时候,就自动省略掉前面的lib 和 结尾的.so

LOCAL_SRC_FILE : 引用文件夹下面的.so,如果是纯路径的话就直接填写,$(TARGET_ARCH_ABI) 指的是在armeabi ,armeabi-v7a,x86 下面找到相应的.so文件,例如:找到libidentifyapp.so和libcasdkjni.so

如图所示:



然后编译运行,就会在

项目/libs/armeabi/下生成: libcasdkjni.so  和  libidentifyapp.so

如图所示:




.so 文件是在项目下面的libs 生成相应的.so 文件, 不过要想项目跑起来,还需要在cocos2dx 的主java文件中找到System.loadLibrary("game"); 这句添加代码

static {

System.loadLibrary("casdkjni");

System.loadLibrary("identifyapp");

System.loadLibrary("game");

}

这里有先后顺序,cocos2dx的.so 文件(game) 一定要放到casdkjni 和 identify app 的后面,不然会报错,如图:






0 0