上篇文章中提到了生成的so文件的目录。现在就讲一下怎么使用NDK编译好的So文件。
一,复制so文件到新建的项目中
二,配置一些基本信息
三,使用so文件中的方法
一。
1,复制lib路径下的文件夹以及so文件。
2,新建一个项目叫Demo,将复制的文件夹和so文件复制到lib 目录下
二。
1,在app build.gradle 的文件的 android 结点 中加入以下代码:
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
如下图:
三。
1,由于上次编译的c文件中的方法 指定了包名类名方法名。所以需要和so文件保持对应的包名类名和方法名。同时在java类中添加引用so文件代码
static {
System.loadLibrary("JniLibName"); //和生成so文件的名字对应。
}
public native String getString();//与so文件中方法对应
运行项目。调用so成功 !
Over!
可能出现的错误:
1,包名或者类名与 so文件不对应,或者没有在java文件中没有loadLibrary("")。
java.lang.UnsatisfiedLinkError: Native method not found: com.android.talon.test1.JniUtils.getString:()Ljava/lang/String;
2,app/ builed.gradle 中没有添加如下代码:
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
java.lang.UnsatisfiedLinkError: Couldn't load JniLibName from loader dalvik.system.PathClassLoader