Android Studio 创建JNI工程之最详细教程

1.概述

    在上一篇文章中 JNI技术-入门教程 中,我们只做了简单的用Java文件生成.h的头文件。

    在真正工作中,想要用自己公司的.so库,又恰巧底层使用C/C++写的,那恭喜你,你得学习JNI技术了。以前都是我直接拿同事生成的.so库来使用,jni流程看过,但是没想过自己写Jni工程,这次设计新的 SDK,层次划分到jni要自己去做的时候才知道,jni要写也是很麻烦的,当然这也是指在自己没做过的情况下,这次就自己动手从0到1实现一遍用Android studio编写的工程吧!

2.NDK下载及配置

    想要用工程编写jni首先一定要有NDK,那么NDK是什么呢? 下面先介绍下NDK是什么!

> 定义 :

     Native Development Kit,是 Android的一个工具开发包【NDK是属于 Android 的,与Java并无直接关系】

> 作用:

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

    即可通过 NDK在 Android中 使用 JNI与本地代码(如C、C++)交互,其实最大原因就是可以在工程中帮助你生成jni的.h头文件

>应用场景:

    在Android的场景下 使用JNI 【即 Android开发的功能需要本地代码(C/C++)实现】

 >NDK特点:

Android Studio 创建JNI工程之最详细教程_第1张图片

>NDK的两种下载方式:

这是Google官方下载: 点击打开下载NDK链接

通过Android studio 下载

在创建的工程 点击 File -> Settings ->

Android Studio 创建JNI工程之最详细教程_第2张图片

一定要点Apply

OK,NDK下载完成

然后 右键工程-> Open Module -> Android NDK Location -> OK -> 等待编译

Android Studio 创建JNI工程之最详细教程_第3张图片

查看一下,等待编译

Android Studio 创建JNI工程之最详细教程_第4张图片

发现根目录local.properties里面多了NDK路径如下图:

Android Studio 创建JNI工程之最详细教程_第5张图片

接着我们在根目录gradle.properties下面加上如下图:

android.useDeprecatedNdk=true

Android Studio 创建JNI工程之最详细教程_第6张图片

继续我们在module下面的build.gradle下面加上ndk节点如下图:

ndk {
        moduleName "JniTest"
       
    }

   Android Studio 创建JNI工程之最详细教程_第7张图片

3.编写Jni接口

Android Studio 创建JNI工程之最详细教程_第8张图片

然后Build -> Make Project一下(记住一定不能拉下这一步,要不你编写的接口内容不会同步到class文件中),我们会发现在/JniTest/app/build/intermediates/下面多了一个classes文件夹.我们可以打开AS下面的Terminal进入到classes下面的release文件夹下。注意:创建工程默认为debug模式的,有的可能编译不过,建议更改为release模式

如下图:

Android Studio 创建JNI工程之最详细教程_第9张图片

正常来说执行到这里  我们只需要输入 javah com.butel.jni.ButelTestJni  就可以生成了,但是有时候会报下图这样的错误:

Android Studio 创建JNI工程之最详细教程_第10张图片

那到这里  我们还是按照上一篇文章所说的执行 javah -classpath . -jni com.butel.jni.ButelTestJni

Android Studio 创建JNI工程之最详细教程_第11张图片好了 到这里  我们的.h文件就生成了!

你可能感兴趣的:(Android Studio 创建JNI工程之最详细教程)