美文网首页
JNI 的注册过程

JNI 的注册过程

作者: 福later | 来源:发表于2021-03-20 16:51 被阅读0次

我这里抽丝剥茧,简明扼要,有时候反而对于应用层开发者更友好。
System.loadLibrary("libxxx.so") 这句代码会去app安装目录lib中中查找xx.so这个文件,我们知道so库里面记录了函数和变量的一些相对地址和符号,在加载时能确定这些函数的绝对地址,在通过系统函数dlsym(dlsym是一个计算机函数,功能是根据动态链接库操作句柄与符号,返回符号对应的地址,不但可以获取函数地址,也可以获取变量地址。)获取函数名为JNI_OnLoad的方法,这就是为什么我们在动态注册函数时,需要我们在C,C++源代码中提供这个函数,然后我们可以在这个方法中调用jinRegisteNative方法将Java类中的函数与native函数相关联。如何关联,可以参看老罗的Dalvik虚拟机JNI方法的注册过程分析
知识扩展:
dlopen以指定模式打开指定的动态连接库文件,并返回一个句柄给调用进程;
dlerror返回出现的错误;
dlsym通-过句柄和连接符名称获取函数名或者变量名;
dlclose来卸载打开的库;

相关文章

  • JNI 的注册过程

    我这里抽丝剥茧,简明扼要,有时候反而对于应用层开发者更友好。System.loadLibrary("libxxx....

  • jni的函数注册过程

    两个宏用于创建注册native方法的数据结构,注意每一项的内容 如NATIVE_METHOD(DexFile, g...

  • 动态注册JNI

    动态注册JNI 使用JNI_OnLoad()动态注册JNI函数。 Github:https://github.co...

  • JNI 静态注册/动态注册

    静态注册 静态注册 native 方法的过程,就是 Java 层声明的 native 方法和 JNI 函数是一一对...

  • JNI

    Android JNI 技术 一,注册JNI接口 附录A 头文件

  • 深入理解JNI

    这章主要从4个方面对JNI进行了阐述:1.JNI的注册,静态注册和动态注册2.Java和JNI层的类型转换3.JN...

  • 二、JNI函数动态注册和静态注册

    JNI函数的注册:将Java层的native函数和JNI层对应的实现函数关联起来。 一、动态注册 1、函数动态注册...

  • JNI-NDK(JNI函数动态注册、JNI线程)

    1、静态注册与动态注册介绍 先说静态注册,此方式为传统做法,JNI函数注册比较方便。在运行期调用JNI函数的时候注...

  • JNI,NDK编程专题

    JNI编程注册方式 JVM 查找 native 方法有两种方式: 1)、按照 JNI 规范的命名规则(静态注册) ...

  • c++的jni动态注册简单示例(上)

    jni动态注册是性能最优的方案。写这个的原因是jni使用的过程中坑比较多,方便此前没有接触过的朋友快速构架开发编译...

网友评论

      本文标题:JNI 的注册过程

      本文链接:https://www.haomeiwen.com/subject/xjuwcltx.html