Android studio 快速进行NDK开发,通过JNI技术实现java与c/c++的互相调用

一、简单介绍NDK和JNI

NDK的全称是Android Native Development Kit,它提供了一系列的工具,帮助开发者快速开发C/C++的动态库,生成so库,供java层调用。

JNI的全称是Java Native Interface,是java语言提供java与c/c++通信的一种机制,使得java与c/c++能够互相调用。

二、Android studio配置NDK路径

随便新建一个android项目,File》Project Structure

Android studio 快速进行NDK开发,通过JNI技术实现java与c/c++的互相调用

下载安装完成NDK后,local.properties文件可以看到SDK和NDK路径,如下图:

Android studio 快速进行NDK开发,通过JNI技术实现java与c/c++的互相调用

接着,gradle.properties文件增加一行:

Android studio 快速进行NDK开发,通过JNI技术实现java与c/c++的互相调用

三、增加生成.h头文件和ndk编译的快捷方式

1、创建生成.h头文件的快捷键,File》Settings》Tools》External Tools:

Android studio 快速进行NDK开发,通过JNI技术实现java与c/c++的互相调用

快捷键名称javah -jni,选中java文件,点击此快捷键就会生成对应的.h文件。

Program是JDK的javah.exe具体路径,$JDKPath$\bin\javah.exe。

Arguments是javah 编译后.h文件的保存位置,-classpath . -jni -d $ModuleFileDir$/src/main/jni/ $FileClass$。

Working directory是java源文件的文件夹路径,$ModuleFileDir$\src\main\java

2、生成ndk编译快捷键 File》Settings》Tools》External Tools:

Android studio 快速进行NDK开发,通过JNI技术实现java与c/c++的互相调用

ndk-build命令是将c/c++文件编译生成so库文件。

Program是ndk编译的命令文件,D:\study_soft\android-sdk\ndk-bundle\ndk-build.cmd。

Working directory:$ModuleFileDir$\src\main\

3、快捷键生成后,该怎么去使用呢?

要根据java文件生成.h,选中java文件》右击》External Tools》javah -jni

Android studio 快速进行NDK开发,通过JNI技术实现java与c/c++的互相调用

编译完成后会生成一个cpp(以前的studio版本可能会是jni)文件夹,此文件夹下.h文件就是我们要的,

Android studio 快速进行NDK开发,通过JNI技术实现java与c/c++的互相调用