JNI 与 NDK 入门(一)

本文介绍了Android中JNI的基本概念和使用NDK的原因。详细讲述了实现JNI的步骤,包括在Java中声明Native方法,使用CMakeList.txt,创建Native方法文件,并在Java代码中调用。此外,还探讨了如何配置NDK路径,将Android项目与NDK关联,以及在Java和C++之间进行交互的方法签名。
摘要由CSDN通过智能技术生成

JNI

概念

JNI是Java Native Interface的简写,它可以使Java与其他语言(如C、C++)进行交互。

它是Java调用Native语言的一种特性,属于Java语言的范畴,与Android无关。

为何需要JNI

  • Java的源文件非常容易被反编译,而通过Native语言生成的.so库文件则不容易被反编译。
  • 有时我们使用Java时需要使用到一些库来实现功能,但这些库仅仅提供了一些Native语言的接口。
  • 使用Native语言编写的代码运行效率高,尤其体现在音频视频图片的处理等需要大量复杂运算的操作上。充分利用了硬件的性能。

由于上述原因,此时我们就需要让Java与Native语言交互。而由于Java的特点,与Native语言的交互能力很弱。因此在此时,我们就需要用到JNI特性增强Java与Native方法的交互能力。

实现的步骤

  1. 在Java中声明Native方法(需要调用的本地方法)
  2. 通过 javac 编译 Java源文件( 生成.class文件)
  3. 通过 javah 命令生成JNI头文件(生成.h文件)
  4. 通过Native语言实现在Java源码中声明的Native方法
  5. 编译成.so库文件
  6. 通过Java命令执行 Java程序,最终实现Java调用本地代码(借助so库文件)

NDK

概念

Native是Native Development Kit的简写,是Android的开发工具包,属于Android,与Java无关系。

它可以快速开发C/C++的动态库,自动将.so和应用一起打包为APK。因此我们可以通过NDK来在Android开发中通过JNI与Native方法交互。

使用方式

  1. 配置 Android NDK环境(在SDK Manager中下载NDK、CMake、LLDB)
  2. 创建 Android 项目,与 NDK进行关联(创建项目时选择C++ support)
  3. 在 Android 项目中声明所需要调用的 Native方法
  4. 用Native语言实现在Android中声明的Native方法
  5. 通过 ndk-bulid 命令编译产生.so库文件

将Android项目与NDK关联

配置NDK路径

local.properties中加入如下一行即可

ndk.dir=<ndk路径>

添加配置

在Gradle的 gradle.properties中加入如下一行,目的是对旧版本的NDK支持

android.useDeprecatedNdk=true

添加ndk节点

在build.gradle中的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值