JNI和NDK

作者: 小柏不是大白 | 来源:发表于2017-05-12 14:49 被阅读21次

Java JNI的本意是Java Native Interface(Java本地接口),是为了方便java调用C、C++等本地代码所封装的一层接口。

NDK是Android所提供的一个工具鸡盒,通过NDK可以在Android中更加方便地通过JNI来访问本地代码,NDK还提供了交叉编译器,开发人员只需要简单地修改mk文件就可以生成特定CPU平台的动态库。

使用NDK的好处:

提高代码的安全性

可以很方便地使用目前已有的C/C++开源库

便于平台间的移植。

提高程序在某些特定情况下的执行效率,但是并 不能明显提高Android程序的性能

JNI和NDK假发所用到的动态库的格式是以.so为后缀的文件

JNI的开发流程

1、在java中声明native方法

声明了两个native方法:get和set,这两个就是需要在JNI中实现的方法

生成class文件

需要先退到java中才可以:

生成JNI头文件

生成一个animation_com_myandfix_MyJni.h文件:

头文件

函数名的格式遵循如下规则:Java_包名_类名_方法名

JNIEnv *:表示一个指向JNI环境的指针,可以通过它来访问JNI提供的接口方法

jobject:表示java对象中的this

JNIEXPORT和JNICALL:他们是JNI中所定义的宏,可以在jni.h这个头文件中查找到

jstring:表示java对象中的String

它指定extern“C”内部的函数采用C语言的命名风格来编译。否则当JNI采用C/C++来实现时,由于C和C++编译过程中对函数的命名风格不同,这将导致JNI在链接时无法根据函数名查找到具体的函数,那么JNI调用就无法完成。

实现JNI方法

JNI方法是指Java中声明的native方法,这里可以选择使用C++或者C来实现:

例子:

c++ c

编译so库并在java中使用

如果使用NDK,Android studio的话,则先导入NDK,后设置有关数据,链接如下:

blog.csdn.net/eastmoon502136/article/details/50759209

相关文章

  • JNI入门学习总结(MAC OS AndroidStudio)

    1 什么是JNI和NDK? JNI:java本地接口 NDK(Native Development Kit)是Go...

  • 音视频开发之旅(17) JNI与NDK的学习和使用

    从这篇开始,我们进入JNI和NDK系列的学习实践,来一起学习成长吧. 目录 什么是JNI、NDK? Java和Na...

  • Android jni

    NDK Windows和linux 环境搭建 JNI函数调用流程,JNI理解和基本数据类型 JNI访问Java中各...

  • JNI

    JNI & NDK JNI(Java Native Interface),提供若干的API实现Java和其他语言的...

  • NDK开发流程

    JNI和NDK 理解层面: JNI: 一、什么是jni? 1、android 系统架构: 2、相当于桥梁的作用: ...

  • JNI简介

    JNI和NDK? JNI (Java Native Interface)是一套编程接口,用来实现java代码和其他...

  • 四、MagicCamera3#C++与Kotlin之间的衔接

    NDK和JNI JNI是Java Native Interface(JAVA本地接口)的缩写,为了方便Java调用...

  • Android 添加JNI 开发能力

    JNI 与 NDK 区别JNI:JNI是一套编程接口,用来实现Java代码与本地的C/C++代码进行交互;NDK:...

  • JNI相关知识点

    1、Android NDK开发:JNI基础篇 2、Android Studio NDK环境配置及JNI使用方法 3...

  • JNI 入门

    ref: Android Studio开发JNI示例Android NDK 开发(二)JNI 传递参数和返回值An...

网友评论

      本文标题:JNI和NDK

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