网上看了一些JNI的入门教程,对新手来说很不友好,容易看的人一脸懵,决定自己写一个从0到1的入门教程。
关于JNI,谷歌官方也提供了入门教程,详情请查看:NDK入门教程
一、简介
JNI(Java Native Interface)是Java编程语言提供的一种编程框架和技术,用于在Java应用程序中调用Native代码(通常是用C/C++编写的)以实现底层功能和与操作系统、硬件交互。JNI允许开发者编写用C/C++等本地语言编写的代码,然后通过JNI接口与Java代码进行交互。例如常见的音视频处理,图像处理,地图等等都会用到JNI。
二、NDK与CMake
原生开发套件 (NDK) 是一套工具,使您能够在 Android 应用中使用 C 和 C++ 代码,并提供众多平台库,您可使用这些平台库管理原生 activity 和访问实体设备组件,例如传感器和触控输入。
您可以在 Android Studio 2.2 或更高版本中使用 NDK 将 C 和 C++ 代码编译到Native库中,然后使用 Android Studio 的集成构建系统 Gradle 将Native库打包到 APK 中。Java 代码随后可以通过JNI框架调用Native库中的函数。
Android Studio 编译Native库的默认构建工具是 CMake。由于很多现有项目都使用 ndk-build 构建工具包,因此 Android Studio 也支持 ndk-build。不过,如果您要创建新的原生库,则应使用 CMake。CMake是一款外部构建工具,可与 Gradle 搭配使用来构建原生库。
ndk-build与CMake都是构建Native代码的工具,安卓 Gradle Plugin 4.0版本开始谷歌更推荐使用CMake。
三、Android.mk、Application.mk与CMakeLists.txt
CMakeLists.txt和Android.mk都是用于构建和管理安卓应用中的本地代码的构建脚本文件。
CMakeLists.txt: 是CMake的配置文件,用于描述项目的构建过程和所需的构建设置。在安卓项目中,CMakeLists.txt文件通常位于app模块的根目录下。
CMakeLists.txt文件可以包含以下内容:
- 定义构建的最低CMake版本。
- 声明要构建的本地库。
- 指定源代码文件。
- 配置编译选项和链接库。
- 定义生成的共享库的名称和属性。
- 配置构建输出路径等。
使用

本文介绍了JNI的基本概念,包括其作为Java与C/C++交互的桥梁作用,以及NDK和CMake在构建原生代码中的应用。文章详细讲解了Android.mk、Application.mk和CMakeLists.txt的差异,并提到了JNI中的数据类型转换和函数命名规则。最后,概述了开发JNI的步骤,包括环境配置、代码编写和接口实现。
最低0.47元/天 解锁文章
1809

被折叠的 条评论
为什么被折叠?



