JNI && NDK && SDK

JNI

  • Java Native Interface,即 Java本地接口.
  • 作用: 使得Java 与 本地其他类型语言(如C、C++)交互(即在 Java代码 里调用 C、C++等语言的代码 或 C、C++代码调用 Java 代码)
  • JNI是 Java 调用 Native 语言的一种特性,是属于 Java 的,与 Android 无直接关系
  • 使用JNI的原因:因为 Java 具备跨平台的特点,所以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与本地代码(如C、C++)交互.即在Android的场景下 使用JNI
  • NDK还提供了交叉编译器,开发人员只需要简单修改mk文件就可以生成特定CPU平台的动态库。
  • 实现步骤:
1.配置 Android NDK环境
2.创建 Android 项目,并与 NDK进行关联
3.在 Android 项目中声明所需要调用的 Native方法
4.使用 Android需要交互的本地代码 实现在Android中声明的Native方法(比如 Android 需要与 C++ 交互,那么就用C++ 实现 Java的Native方法)
5.通过 ndk - bulid 命令编译产生.so库文件
6.编译 Android Studio 工程,从而实现 Android 调用本地代码
  • NDK与JNI: Android通过NDK实现JNI

SDK

  • Software Development Kit, SDK
  • 作用:提供了让我们编写的java代码成功运行在Android平台上所需的一系列工具和API。
  • 组成(部分):

    • SDK Tools:它包含了用于开发app所需要的一些工具,用来测试和调试程序
    • SDK Platform-tools:保存着一些通用工具,比如adb、和aapt、aidl、dx等文件
    • System Images:每一个platform版本都会提供一个或多个不同的系统镜像(例如ARM 和 x86版本),Android的虚拟机需要一个系统镜像来运行。

相关推荐