为了让工程的jni更清爽,通常会将更底层的代码ndk-build成第三方.so库,在jni中引用该库。
在实现之前必须保证,第三方.so库是ndk-build编译而成,若在Linux环境下编译成.so库,在Android中是不能被引用的,会出现:
Unable to recognise the format of the input file `./libs/armeabi/lib***.so的错误。因为此.so库是x86或其他编译结构编译的,ndk-build是armeabi架构编译。
尝试方法一:将用ndk-build编译得到的liba.so直接放到armeabi目录中,你会发现,在build的时候,armeabi文件会被自动清空,所以此方法行不通。
尝试方法二:此方法也是测试通过的,现介绍如下:
(1)、首先写一个测试库:libmaxmin.so,此库的功能是比较两个数的大小,max.c-返回较大数,min.c-返回较小数。
max.h:
int max(int a,int b);
max.c:
#include "max.h"
#include <stdlib.h>
#include <stdio.h>
int max(int a,int b){
if(a >= b){
return a;
}else{
return b;
}
}
min.h:
<