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库中查找函数,显得很麻烦和低效)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容