![50f3dbe2f1d02796a4aff6a2f9528fc4.png](https://i-blog.csdnimg.cn/blog_migrate/57fdb1d49d8796456e520b3fbccce1f2.jpeg)
本文基于 Android Studio 3.4.2 、gradle:3.2.1
1、什么是 JNI、NDK?
JNI 是 Java Native Interface (Java 本地接口)的缩写,是 Java 与其他语言通信的桥梁。在 Android 中的应用主要为:音视频开发、热修复、插件化、逆向开发和系统源码调用,为了方便使用 JNI 技术,Android 提供了 NDK 工具集合,它和 JNI 开发本质上没有区别,NDK 是在 Android 中实现 JNI 的手段,
NDK 有两个主要作用:
- 帮助开发者快速开发 C/C++ 的动态库
- NDK 使用了交叉编译器,可以在一个平台上开发出另一个平台的二进制代码
2、Android 中 NDK 的使用
1)首先下载 NDK 的安装包
在 SDK Tools 里下载 NDK、LLDB、CMake
![0dcd815bc2ad3706e80848b726b65286.png](https://i-blog.csdnimg.cn/blog_migrate/b22b48336ca4f9a2803f873f0bb7749f.jpeg)
- NDK : 即我们需要下载的工具,会生成到 SDK 根目录下的 ndk-bundle 目录下
- CMake : 一个跨平台的编译构建工具,可以用简单的语句来描述所有平台的安装过程
- LLDB : 一个高效的 C/C++ 的调试工具
2)编写界面
这里的界面很简单,一个 TextView 和一个 Button ,点击 Button 后调用 JNI 的方法修改 TextView 的值。
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".JNIDemo.JNIActivity">
<TextView
android:id="@+id/jni_tv"
android:layout_marginTop="20dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:text="I'm a TextView"
android:textAllCaps="false"