安卓JNI精细化讲解,让你彻底了解JNI(一):环境搭建与HelloWord

目录
1、基础概念
├──1.1、JNI
├──1.2、NDK
├──1.3、CMake与ndk-build
2、环境搭建
3、Native C++ 项目(HelloWord案例)
├── 3.1、项目创建(java、kotlin)
├── 3.2、CMake的应用(详细讲解)
├── 3.3、ndk-build的应用(详细讲解)

1、基础概念 1.1、JNI

JNI(Java Native Interface)Java本地接口,使得Java与C/C++具有交互能力

1.2、NDK

NDK(Native Development Kit) 本地开发工具包,允许使用原生语言(C和C++)来实现应用程序的部分功能

Android NDK开发的主要作用:

1、特定场景下,提升应用性能; 2、代码保护,增加反编译难度; 3、生成库文件,库可重复使用,也便于平台、项目间移植; 1.3、CMake与ndk-build

当我们基于NDK开发出native功能后,通常需要编译成库文件,给Android项目使用。
目前,有两种主流的编译方式:__CMake__与ndk-build

__CMake__与__ndk-build__是两种不同的编译工具(与Android代码和C/C++代码无关)

CMake

CMake是Androidstudio2.2之后引入的跨平台编译工具(特点:简单易用,2.2之后是默认的NDK编译工具) 如何配置: 1、创建CMakeLists.txt文件,配置CMake必要参数; 2、使用gradle配置CMakeLists.txt以及native相关参数; 如何编译库文件: 1、Android Studio执行Build即可;

ndk-build

ndk-build是NDK中包含的脚本工具(可在NDK目录下找到该工具,为了方便使用,通常配置NDK的环境变量) 如何配置: 1、创建Android.mk文件,配置ndk-build必要参数; 2、可选创建application.mk文件,配置ndk-build参数 (该文件的配置项可使用gradle的配置替代); 3、使用gradle配置Android.mk以及native相关参数; 2、如何编译库文件(两种方式): 1、Android Studio执行Build即可(执行了:Android.mk + gradle配置); 2、也可在Terminal、Mac终端、cmd终端中通过ndk-build命令直接构建库文件(执行了:Android.mk) 2、环境搭建

JNI安装
JNI 是JDK里的内容,电脑上正确安装并配置JDK即可 (JDK1.1之后就正式支持了);

NDK安装
可从官网自行下载、解压到本地,也可基于AndroidStudio下载解压到默认目录;

编译工具安装
cmake 可基于AndroidStudio下载安装;
ndk-build 是NDK里的脚本工具,NDK安装好即可使用ndk-build;

当前演示,使用的Android Studio版本如下(当前最新版):

安卓JNI精细化讲解,让你彻底了解JNI(一):环境搭建与HelloWord

启动Android Studio --> 打开SDK Manager --> SDK Tools,如下图所示:

安卓JNI精细化讲解,让你彻底了解JNI(一):环境搭建与HelloWord

我们选择NDK、CMake、LLDB(调试Native时才会使用),选择Apply进行安装,等安装成功后,NDK开发所依赖的环境也就都齐全了。

3、Native C++ 项目(HelloWord案例) 3.1、项目创建(java / kotlin)

新建项目,选择 Native C++,如下图:

安卓JNI精细化讲解,让你彻底了解JNI(一):环境搭建与HelloWord

安卓JNI精细化讲解,让你彻底了解JNI(一):环境搭建与HelloWord

安卓JNI精细化讲解,让你彻底了解JNI(一):环境搭建与HelloWord

新创建的项目,默认已包含完整的native 示例代码、cmake配置 ,如下图:

安卓JNI精细化讲解,让你彻底了解JNI(一):环境搭建与HelloWord

安卓JNI精细化讲解,让你彻底了解JNI(一):环境搭建与HelloWord

这样,我们就可以自己定义Java native方法,并在cpp目录中写native实现了,很方便。

但是,当我们写完native的实现代码,希望运行APP,查看JNI的交互效果,此时,就需要使用编译工具了,咱们还是先看一下Android Studio默认的Native编译方式吧:CMake

3.2、CMake的应用

在CMake编译之前,咱们应该先做哪些准备工作?

1、NDK环境是否配置正确? -- 如果未配置正确是无法进行C/C++开发的,更不用说CMake编译了 2、C/C++功能是否实现? -- 此次演示主要使用系统默认创建的native-lib.cpp文件,关于具体如何实现:后续文章再详细讲解 3、CMakeLists.txt是否创建并正确配置? -- 该文件是CMake工具编译的基础,未配置或配置项错误,均会影响编译结果 4、gradle是否正确配置? -- gradle配置也是CMake工具编译的基础,未配置或配置项错误,均会影响编译结果

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpjzyf.html