Android JNI与NDK学习(一)
导读:
在我们做Android开发,都会在工作中用到JNI的开发。即使工作中没有涉及到JNI的开发,在我们使用第三方的库时,也经常需要引入.so文件来供系统选择所需要的cpu架构(ABI)----->armeabi 、armeabi-v7a 、x86
在学习JNI开发时,基本是懵的。大部分JNI开发的指南,其实是在教我们,如何生成.so文件和如何引入.so文件。
本旨带大家清晰的学习一下JNI和NDK
一、认识JNI与NDK
(1)JNI是Java Native Interface的缩写,通过使用 Java本地接口书写程序,可以确保代码在不同的平台上方便移植。
他有属于自己的命名规范,该规范使得在 Java 虚拟机内运行的 Java 代码能够与其它编程语言互相操作,包括创建本地方法、
更新Java对象、调用Java方法,引用 Java类,捕捉和抛出异常等,也允许 Java代码调用 C/C++或汇编语言编写的程序和库。
(2)在Android OS上开发应用程序,Google提供了两种开发包:SDK和NDK。
NDK是用来给安卓手机开发软件用的,但是和SDK不同的是它用的是C语言,而SDK用的是Java语言。
NDK开发的软件在安卓的环境里是直接运行的,一般只能在特定的CPU指令集的机器上运行,而且C语言可以直接和硬件对话,因此一般用 它开给手机开发驱动或底层应用;而SDK开发出的软件在安卓上靠Dalvik虚拟机来运行,所以如果没有特殊的需要或署专门针对某个硬件去 开发,那就一般用SDK
简单的来说:Android NDK 就是一套工具集合,允许你使用C/C++语言来实现应用程序的部分功能。
二、编译步骤
(1)编写带有native声明的方法的java类
(2)使用javac命令编译所编写的java类
(3)然后使用javah + java类名生成扩展名为h的头文件
(4)使用C/C++实现本地方法
(5)将C/C++编写的文件生成动态连接库
JNI所扮演的角色JNI下一共涉及到三个角色:C/C++代码、本地方法接口类、Java层中具体业务类。
简要流程三、实战——》环境配置
我使用的win10 环境下 Android studio版本为:
Android studio配置NDK 环境
File-->setting-->Appearance&Behavior-->System Setting-->Android SDK
PS.有的同学可能打开没有NDK这个选项是因为AS这个IDE有两个启动方式,把你的AS全部关闭 选择studio64位的重新启动即可
Android studio需要配置一下环境(windows)
NDK下载完成以后在你的Android SDK目录下会生成ndk-bundle文件夹,复制他的路径在环境变量Path里面配置一下
在windows窗口使用 ndk-build 命令查看是否配置成功
ndk这句话的意思是没有找到可以编译文件,这个不用管它 看到这句话证明你的环境变量配置成功了
在接下来我们进行JNI学习的实战'演练'以及在AS上使用CMake进行JNI编程。
感觉有用的同学,动动小手指给个赞,码字不易。