android调用native函数流程

native调用流程

载入so库

    static {
        System.loadLibrary("test");
    }
  1. 执行上述代码时,程序通过JVM载入这个libtest.so文件;与此同时它会产生一个load事件,促使程序会去这个so文件查找JNI_OnLoad函数

  2. JNI_OnLoad函数由native的开发者实现,该函数主要提供的是版本信息和这个so库的所有函数索引

  3. JVM拿到test这个so库的函数表会把他注册到自己内部的一个函数链表中去

//调用libtest.so里面的函数
String str = TestUtils.test();
  1. 调用so库函数,会去JVM的内部的函数链表去查找这个函数(如果不这样做,每次调用都会去so库中查找函数,显得很麻烦和低效)

你可能感兴趣的:(android调用native函数流程)