首页
学习
活动
专区
圈层
工具
发布

Kotlin Native 写 Jni 第二弹:动态绑定 Native 方法

上一篇文章 我讲了用 @CName 这个神奇的注解,可以配置 Kotlin Native 函数在符号表中的名字,进而根据 Jni 静态绑定的规则来对应到 Java native 方法,但实际开发当中我们更喜欢用动态注册的方式...如果大家习惯用 C 写动态绑定的代码,那么 Kotlin Native 写起来思路也是很简单的,只要依样画葫芦,就可以写出来,我们先给出代码: @CName("JNI_OnLoad") fun JNI_OnLoad...(vm, envStorage.ptr.reinterpret(), JNI_VERSION_1_6) __android_log_print(ANDROID_LOG_INFO.toInt...(), "Kn", "JNI_OnLoad") if(result == JNI_OK){ val env = envStorage.pointed!!...._1_6 } } 思路很简单,就是先通过 CName 注解搞定 JNI_OnLoad 函数,让 Java 虚拟机能够在加载 so 库的时候找到这个入口函数,那么我们接下来就是纯调用 Jni 的

1.7K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

    由于JNI是JVM规范的一部分,因此可以将我们写的JNI的程序在任何实现了JNI规范的Java虚拟机中运行。...同时,这个特性使我们可以复用以前用C/C++写的大量代码JNI是一种在Java虚拟机机制下的执行代码的标准机制。代码被编写成汇编程序或者C/C++程序,并组装为动态库。也就允许非静态绑定用法。...(四) JNI的三个角色 ? JNI的三个角色.png JNI下一共涉及到三个角色:C/C++代码、本地方法接口类、Java层中具体业务类。 JNI简要流程 ?...PS:javah 是JDK自带的一个命令,-jni参数表示将class 中用到native 声明的函数生成JNI 规则的函数 如下图: ? JNI开发流程.png (七) JNI结构 ?...JNI函数指针,这些指针指向了详细的JNI函数。

    8.6K32

    jni note

    2016-1-15 javah 使用javah可以自动从java文件生成jni头文件,   用法:javah [选项]   其中 [选项] 包括:             -help                 ...          -d              输出目录              -o              输出文件(只能使用 -d 或 -o 中的一个)              -jni...                  生成 JNI样式的头文件(默认)              -version              输出版本信息              -verbose              ...执行:     javah -d lib -classpath out/production/VideoSvr -jni cwh.NVR.NVRNative   关键在于找到正确的classpath,注意...-jni 类名要放在最后面写,否则会把-jni后面的东西都当做类名解析的。

    81170

    JNI基础

    ###JNI开发步骤: 创建一个android工程 JAVA代码中写声明native 方法 public native String helloFromJNI(); 用javah工具生成头文件 创建jni...C的方法(本地方法) //1.定义一个native的方法 public native String helloFromC(); 在工程中新建一个jni文件夹(然后在这个文件夹中写c代码,在C中实现...,只允许写数据 “at” 追加打开一个文本文件,并在文件末尾写数据 “rb” 只读打开一个二进制文件,只允许读数据 “wb” 只写打开或建立一个二进制文件,只允许写数据 “ab” 追加打开一个二进制文件...,并在文件末尾写数据 “rt+” 读写打开一个文本文件,允许读和写 “wt+” 读写打开或建立一个文本文件,允许读写 “at+” 读写打开一个文本文件,允许读,或在文件末追加数据 “rb+” 读写打开一个二进制文件...,允许读和写 “wb+” 读写打开或建立一个二进制文件,允许读和写 “ab+” 读写打开一个二进制文件,允许读,或在文件末追加数据 对于文件使用方式有以下几点说明: 文件使用方式由r,

    1.7K100

    JNI介绍

    1 JNI定义 JNI(Java Native Interface),即Java本地接口,JNI是Java调用Native 语言的一种特性。通过JNI可以使得Java与C/C++机型交互....以下是oracle对JNI的定义 JavaTM Native Interface (JNI) is a standard programming interface for writing Java...更多oracle关于JNI的介绍可以参考 Java 原生接口规范 2 JNI介绍 Java语言的执行环境是Java虚拟机(JVM),JVM其实是主机环境中的一个进程,每个JVM虚拟机都在本地环境中有一个...JavaVM结构体,该结构体在创建Java虚拟机时被返回,在JNI环境中创建JVM的函数为JNI_CreateJavaVM。...Native code通过JNI Function来访问Java VM的功能. JNI Function可以通过接口指针JNIEnv*来访问, 该指针指向一个指针数组,每个指针指向一个接口函数。

    1.1K10
    领券