Android JNI开发--集成第三方SO

我们的应用需要调用第三方so中的方法,然后,第三方可以提供相应的SO文件和相应的头文件。

  • SO文件:libFunction.so;
  • 头文件:function.h,如下:
extern "C" {
	......
	int getResult(int index);
}

接下来就是如何使用这个SO和头文件function.h。

调用SO内方法

比如我们的源码文件为Test.cpp:

//引入第三方的头文件
#include "function.h"

int function(int index){
	//调用第三方的方法
    return getResult(index);
}
......

然后,我们就可以在java代码通过相应的JNII方法java调用JNI方法中调用这个function方法了。
或者可以添加上其他复杂的逻辑。

使用第三方SO

首先需要把第三方的SO文件放在我们工程目录中的某个文件夹内。
其实,在任意一个目录下都可以,可以是 app(module)/libs 、app/src/main/libs内,或者直接在app(module)内创建一个新的文件夹都可以,可以按照自己的想法来。
比如我们在app(module)内创建一个 .thirdpartlibs 文件夹,然后创建相应的CPU架构适配文件armeabi-v7a,第三方SO文件就放在这个文件夹内。
然后,我们就需要编写相应的Android.mk文件,将第三方SO文件编入我们新的SO文件内,如下:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
# c每一个第三方的SO文件,都需要单独生成一个LOCAL_MODULE
LOCAL_MODULE := libFunction.so
# c找到第三方so的路径
LOCAL_SRC_FILES := ../../../.thirdpartlibs/$(TARGET_ARCH_ABI)/libFunction.so
include $(PREBUILT_SHARED_LIBRARY)


include $(CLEAR_VARS)
# c生成的新的SO文件名称
LOCAL_MODULE    := Test
# c源码文件
LOCAL_SRC_FILES += Test.cpp
# c新生成的SO需要编入的第三方SO
LOCAL_SHARED_LIBRARIES += libFunction.so
LOCAL_LDLIBS    := -llog -landroid
NDK_APP_DST_DIR := ../libs/$(TARGET_ARCH_ABI)
include $(BUILD_SHARED_LIBRARY)

然后,就可以生成相应的新的libTest.so文件,然后在java代码中直接:

    static
    {
        System.loadLibrary("Test");
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值