06 jni编译与调用

    xiaoxiao2024-12-07  60

    加载和链接本地方法

     

    在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

     

    最新回复(0)