美文网首页NDK
Android:JNI 与 NDK到底是什么

Android:JNI 与 NDK到底是什么

作者: 周蛋蛋 | 来源:发表于2019-04-01 20:18 被阅读27次

经常看到JNI和NDK,两者都是经常和C打交道,但是二者什么区别不是很懂,在CSDN上看到一个整理很好的,所以拿来学习学习

JNI

简介
  • 定义: Java Native Interface,即Java 本地接口

  • 作用:使得Java与本地其他类型语言(如C,C++)交互

说白了就是Java代码里调用C,C++等语言的代码或C,C++代码调用Java代码

注意事项
1.JNI是Java调用Native语言的一种特性
2.JNI是属于Java的,与Android 无直接关系

为什么要用JNI
  • 背景:实际使用中,Java需要与本地代码进行交互

  • 问题:因为Java具备快跨平台的特点,所以Java与本地代码交互的能力非常弱

  • 解决方案: 采用 JNI特性 增强 Java 与 本地代码交互的能力

实现步骤

1.在Java中声明Native 方法(即需要调用本地方法)
2.编译上述Java源文件javac(得到.class文件)
3.通过javah命令导出JNI的头文件(.h文件)
4.使用Java需要交互的本地代码实现在Java中声明的Native方法
如 Java 需要与 C++ 交互,那么就用C++实现 Java的Native方法
5.编译.so库文件
6.通过Java命令执行 Java程序,最终实现Java调用本地代码

NDK

简介
  • 定义:Native Development kit,是Android的一个工具开发包
    NDK是属于Android 的,与Java并无直接关系
  • 作用:快速开发C,C++的动态库,并自动将so和应用一起打包成APK,
    即可通过NDK在Android 中使用JNI与本地代码交互
  • 应用场景:在Android的场景下 使用JNI
    即 Android开发的功能需要本地代码(C/C++)实现
    image.png
    注意
image.png

使用步骤

  • 配置 Android NDK环境

  • 创建 Android 项目,并与 NDK进行关联

  • 在 Android 项目中声明所需要调用的 Native方法

  • 使用 Android需要交互的本地代码 实现在Android中声明的Native方法
    比如 Android 需要与 C++ 交互,那么就用C++ 实现 Java的Native方法
    通过 ndk - bulid 命令编译产生.so库文件
    编译 Android Studio 工程,从而实现 Android 调用本地代码

    两者的关系

image.png

具体细节:原作者 https://blog.csdn.net/carson_ho/article/details/73250163

相关文章

网友评论

    本文标题:Android:JNI 与 NDK到底是什么

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