美文网首页
jni 编程要点

jni 编程要点

作者: _喝喝酒吹吹风_ | 来源:发表于2021-01-02 13:33 被阅读0次

    Android JNI(一)——NDK与JNI基础

    JNI开发流程的步骤

    第1步:在Java中先声明一个native方法
    第2步:编译Java源文件javac得到.class文件
    第3步:通过javah -jni命令导出JNI的.h头文件
    第4步:使用Java需要交互的本地代码,实现在Java中声明的Native方法(如果Java需要与C++交互,那么就用C++实现Java的Native方法。)
    第5步:将本地代码编译成动态库(Windows系统下是.dll文件,如果是Linux系统下是.so文件,如果是Mac系统下是.jnilib)
    第6步:通过Java命令执行Java程序,最终实现Java调用本地代码。

    作用域

    JNI接口指针仅在当前线程中起作用

    JNIEnv是什么?

    JNIEnv是一个线程相关的结构体,该结构体代表了Java在本线程的执行环境

    JNIEnv和JavaVM的区别:
    • JavaVM:JavaVM是Java虚拟机在JNI层的代表,JNI全局仅仅有一个
    • JNIEnv:JavaVM 在线程中的代码,每个线程都有一个,JNI可能有非常多个JNIEnv;
    JNIEnv的作用:
    • 调用Java 函数:JNIEnv代表了Java执行环境,能够使用JNIEnv调用Java中的代码
    • 操作Java代码:Java对象传入JNI层就是jobject对象,需要使用JNIEnv来操作这个Java对象
    native 方法的注册
    • 静态注册:本地方法名为java的方法名+包名路径

    • 动态注册:可以自定义关联
      JNI_OnLoad

    JNI规范中定义了三种引用
    refrence

    JNI开发之方法签名与Java通信(二)

    相关文章

      网友评论

          本文标题:jni 编程要点

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