Android Studio 下使用第三方链接库

Android Studio(以下简称AS)引入jni开发后,可以调用C/C++代码,未开发带来极大的便利,C/C++的编译执行效率也要比java代码高,而且还可引用第三方动态库或者静态库,避免了二次开发。

下面介绍如何在AS中如何实现引用第三方库(以opus库为例),这里使用的是经典的Android.mk。

1. 如何将默认的CMake编译方式调整为Android.mk,不在赘述,详情查看如下链接:
http://blog.csdn.net/xy_kok/article/details/72876758

2. 经过修改后Android.mk中指定了jni库的编译规则,这里需要做的是将其重命名。由于个人原因同一个模块下只允许存在一个Android.mk文件。这里重命名为opusjni.mk,代码如下:


从示例代码中可以看出,文中引用了一个名为static_opus的动态库,这个稍后会依据opus库编译出来。

3. jni文件所在cpp目录下创建include和libs目录,分别存放第三方所用的头文件和库。如下图所示


4. 如上图所示,在cpp目录下新建一个opuslib.mk的文件,主要指定第三方lib库的编译规则,该文件内容如下:

从示例中不难看出,文件以libs目录下的libopus.so为源文件,将其预构建成一个名为libstatic_opus.so的动态库。
注意:文中使用libopus.so必须符合规定abi中所指定平台架构,可以从网上找对应平台的库,当然为了安全最好是,下载源码,配置交叉编译环境,编译平台所需的目标库。

5. 在第2步中我们将Android.mk文件重命名了,所以要再为build.gradle配置一个新的Android.mk文件,并将上述步骤中的opuslib.mk 和 opusjni.mk串联起来,内容如下:


注意:最好将所有的mk文件都放在同一级目录下,否则在串联mk文件中,容易发生目录混淆的问题。

6. Application.mk文件内容如下:
APP_STL := stlport_static
APP_ALLOW_MISSING_DEPS=true


7. 最后如果依然无法通过编译,则把要使用的库都放到sdk的ndk-bundle目录下去
./ndk-bundle/platforms/android-24/arch-arm/usr/lib/libopus.so
./ndk-bundle/platforms/android-24/arch-arm64/usr/lib/libopus.so
这里默认链接24版本,如果分不清的话,可以写个脚本或者批处理把库复制到所有的版本下去。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值