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

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.
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即可;
1.
2.
3.
4.
5.
6.
7.
8.
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)
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
2、环境搭建
JNI安装
JNI 是JDK里的内容,电脑上正确安装并配置JDK即可 (JDK1.1之后就正式支持了);

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

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

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

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

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

3、Native C++ 项目(HelloWord案例)
3.1、项目创建(java / kotlin)
新建项目,选择 Native C++,如下图:

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

这样,我们就可以自己定义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工具编译的基础,未配置或配置项错误,均会影响编译结果
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
除此之外,咱们还应该学习CMake的哪些重要知识?

1、CMake工具编译生成的库文件默认在什么位置?apk中库文件又是在什么位置?
2、CMake工具如何指定编译生成的库文件位置?
3、CMake工具如何指定生成不同CPU平台对应的库文件?
1.
2.
3.
带着这些问题,咱们开始CMake之旅吧:

3.2.1、NDK环境检查
编译前,建议先检查下工程的NDK配置情况(不然容易报一些乱七八糟的错误):
File --> Project Structure --> SDK Location,如下图(我本地的Android Studio默认没有给配置NDK路径,那么,需要自己手动指定一下):

3.2.2、C/C++功能实现
因为本节主讲CMake编译工具,代码就不单独写了,咱们直接使用工程默认生成的native-liv.cpp,简单调整一

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值