Android:JNI 与 NDK到底是什么?(含实例教学)

https://blog.csdn.net/carson_ho/article/details/73250163

JNI

  • 定义:Java Native Interface,即 Java本地接口
  • 作用: 使得Java 与 本地其他类型语言(如C、C++)交互
  • 背景:实际使用中,Java 需要与 本地代码 进行交互
  • 问题:因为 Java 具备跨平台的特点,所以Java 与 本地代码交互的能力非常弱
  • 解决方案: 采用 JNI特性 增强 Java 与 本地代码交互的能力

实现步骤

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

NDK

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

  • 额外注意

 

使用步骤

  • 配置 Android NDK环境
  • 创建 Android 项目,并与 NDK进行关联
  • 在 Android 项目中声明所需要调用的 Native方法
  • 使用 Android需要交互的本地代码 实现在Android中声明的Native方法 比如 Android 需要与 C++ 交互,那么就用C++ 实现 Java的Native方法
  • 通过 ndk - bulid 命令编译产生.so库文件
  • 编译 Android Studio 工程,从而实现 Android 调用本地代码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值