Java Native Interface (JNI) 是java提供的本地化接口,方便java代码调用C,C++等本地代码所封装的接口。NDK是Google为Android提供的一个工具集合,通过MK文件可以方便快捷的生成各个CPU平台所需要的动态库。使用NDK有如下好处。

    1. so库的高难度反编译,提高代码的安全性。

    2. 可以方便的使用C/C++等Native语言的第三方库。

    3. 核心代码通过动态库的方式,便于代码移植。

    4. 提高某些特性情况下程序的执行效率。

    本文以Win7系统,Android Studio 3.0为环境测试。

  JNI开发的流程:

    1. 创建Android Studio项目,在main文件夹的同级目录创建jni文件夹

    Android JNI 和NDK编程(一)

    2. 创建Java Native交互类

     Android JNI 和NDK编程(一)

    3. 使用javac命令生成java源文件生成class文件

       Android JNI 和NDK编程(一)

       Android JNI 和NDK编程(一)

      注意:(1).生成源文件时需要全路径,这样会在同级目录下生成class文件,也可以通过 -d 的命令自定义class文件的生成路径

    Android JNI 和NDK编程(一)

     Android JNI 和NDK编程(一)

      上面就是通过指定文件夹生成对应的class文件。

    注意:(2). 如果编译的java文件不在同一个目录可通过如下方式:

    Android JNI 和NDK编程(一)

   4. 通过javah命令以及指定第三步生成的class文件路径生成对应的C/C++  xx.h文件

   Android JNI 和NDK编程(一)

   Android JNI 和NDK编程(一)

   也可以通过-d 指定xx.h文件的生成路径。

  5. 创建xx.cpp文件实现第四步生成的xx.h头文件

   Android JNI 和NDK编程(一)

到这里整个jni开发的准备工作就做完了,如何实现数据交互将在下一章讲述。

相关文章: