如何在JNI工程中使用第三方库文件

我们在开发android APP时经常需要调用第三方库文件,有的是以动态库的形式提供(.so),有的则是以静态库的形式提供(.a),这两种形式各有优势:

动态库是动态加载,只有用到的时候才会载入到内存;而静态库有较好的移植性,不依赖于其他系统库,所以适用于不同平台。

一般在android开发中一般是在一次编译中首先产生动态库或静态库,然后后续的编译中引用这些库,这种方式一般是把库放到固定的目录下,每次都会重新产生,外部复制进去的库文件会被清除,不能被使用。

那能否将第三方库随便放入到工程的某个目录下,编译时引用该库呢?答案是肯定的。

那如何书写Android.mk文件呢?

加入我们要引入第三方提供的动态库文件libtest.so,如何将该文件编译进去呢?

使用LOCAL_SHARED_LIBRARIES是将系统中的动态库加入的,例如:libz.so, libutils.so等;

引用第三方提供的库文件,假设libtest.so存放的目录是$(LOCAL_PATH)/abcd/libtest.so,那我们可以采用如下的方式加入:

LOCAL_LDLIBS += -L$(LOCAL_PATH)/abcd  -ltest


如果是静态库呢?

假如我们要把$(LOCAL_PATH)/abcd/libtest.a引入到工程中,可以采用如下的方式:

LOCAL_LDFLAGS += $(LOCAL_PATH)/libtest.a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值