当前位置 : 主页 > 编程语言 > java >

【Java -- 基础】JNI 与 NDK (含实例教学)

来源:互联网 收集:自由互联 发布时间:2022-06-22
前言 在Android开发中,使用 NDK 开发的需求正逐渐增大 但很多人却搞不懂 JNI 与 NDK 到底是怎么回事 今天,我将先介绍 JNI 与 NDK 之间的区别,手把手进行 NDK的使用教学 1. JNI 1.1 简介 定义

前言

  • 在Android开发中,使用 NDK 开发的需求正逐渐增大
  • 但很多人却搞不懂 JNI 与 NDK 到底是怎么回事
  • 今天,我将先介绍 JNI 与 NDK & 之间的区别,手把手进行 NDK的使用教学

1. JNI

1.1 简介

  • 定义:Java Native Interface,即 Java本地接口
  • 作用: 使得Java 与 本地其他类型语言(如C、C++)交互

即在 Java代码 里调用 C、C++等语言的代码 或 C、C++代码调用 Java 代码

  • 特别注意:
  • JNI是 Java 调用 Native 语言的一种特性
  • JNI 是属于 Java 的,与 Android 无直接关系

1.2 为什么要有 JNI

  • 背景:实际使用中,Java 需要与 本地代码 进行交互
  • 问题:因为 Java 具备跨平台的特点,所以Java 与 本地代码交互的能力非常弱
  • 解决方案: 采用 JNI特性 增强 Java 与 本地代码交互的能力

1.3 实现步骤

  • 在Java中声明Native方法(即需要调用的本地方法)
  • 编译上述 Java源文件javac(得到 .class文件)
  • 通过 javah 命令导出JNI的头文件(.h文件)
  • 使用 Java需要交互的本地代码 实现在 Java中声明的Native方法

如 Java 需要与 C++ 交互,那么就用C++实现 Java的Native方法

  • 编译.so库文件
  • 通过Java命令执行 Java程序,最终实现Java调用本地代码

2. NDK

2.1 简介

  • 定义:Native Development Kit,是 Android的一个工具开发包

NDK是属于 Android 的,与Java并无直接关系

  • 作用:快速开发C、 C++的动态库,并自动将so和应用一起打包成 APK

即可通过 NDK在 Android中 使用 JNI与本地代码(如C、C++)交互

  • 应用场景:在Android的场景下 使用JNI

即 Android开发的功能需要本地代码(C/C++)实现

  • 特点
    【Java -- 基础】JNI 与 NDK (含实例教学)_c++
  • 注意
    【Java -- 基础】JNI 与 NDK (含实例教学)_java_02

2.2 使用步骤

  • 配置 Android NDK环境
  • 创建 Android 项目,并与 NDK进行关联
  • 在 Android 项目中声明所需要调用的 Native方法
  • 使用 Android需要交互的本地代码 实现在Android中声明的Native方法

比如 Android 需要与 C++ 交互,那么就用C++ 实现 Java的Native方法

  • 通过 ndk - bulid 命令编译产生.so库文件
  • 编译 Android Studio 工程,从而实现 Android 调用本地代码

3. NDK与 JNI 关系

【Java -- 基础】JNI 与 NDK (含实例教学)_c++_03

4. 使用

Android Studio2.2 以上实现 NDK

  • 步骤1:按提示创建工程
    在创建工程时,需要配置 NDK,根据提示一步步安装即可。
    【Java -- 基础】JNI 与 NDK (含实例教学)_NDK_04
  • 步骤2:根据需求使用NDK
    配置好NDK后,Android Studio会自动生成C++文件并设置好调用的代码
    【Java -- 基础】JNI 与 NDK (含实例教学)_NDK_05


【本文来源:香港将军澳机房 http://www.558idc.com/hk.html 欢迎留下您的宝贵建议】
网友评论