- 加载和链接本地方法
在Java里通过System.loadLibrary()来加载动态库,但是,动态库只能被加载一次,因此,通常动态库的加载放在静态初始化语句块中。
package pkg;
class Cls {
native double f(int i, String s); // 声明为本地方法
static {
System.loadLibrary(“pkg_Cls”); // 通过静态初始化语句块来加载动态库.so
}
}
通常在动态库中声明大量的函数,这些函数被Java调用,这些本地函数由VM维护在一张函数指针数组中,在本地方法里通过调用JNI方法RegisterNatives()来注册本地方法和Java方法的映射关系。
编译的so库位置放在
-src
-java
-res
-jniLibs
-armeabi
对于arm-v8平台,若jniLibs有armeabi-v8目录,则优先调用该目录的动态库,否则调用低版本(如armeabi-v7a目录)中的动态库。也可以统一将目录名写为armeabi
Androidstudio编译c/c++jni方法
https://blog.csdn.net/zrf1335348191/article/details/73914631