NDK简述
NDK:Native Development Kit(Kit n.配套元件)是一系列工具的集合
;
它提供了一系列的工具,帮助开发者快速开发C/C++的动态库
,
并能自动将so和Java一起打包成apk
;
JNI简述
JNI:Java Native Interface;
JNI标准
是Java平台的一部分,
JNI是Java语言提供的Java和C/C++相互沟通的机制,
Java可以通过JNI调用C/C++代码,
C/C++代码也可以调用Java代码;
补充
- NDK可以为我们生成
C/C++
的动态链接库
,
JNI是Java和C/C++沟通的接口,
这两者与Android没有什么关系,只是Android是Java语言开发,
通过JNI可以实现与C/C++沟通,
所以可以使用NDK+JNI来实现“Java+C”的Android开发方式。
NDK工具目录简述
- SDK目录下的ndk-bundle
-
toolchains是不同的CPU架构的指令集:
项目会通过toolchains进行编译;
- platforms包则负责把程序编译成手机对应的版本:
为什么要NDK开发(NDK开发优点)
-
项目需要调用
底层
的一些C/C++的东西
(java无法直接访问到OS底层,如系统硬件等),
或者已经在C/C++环境下实现了功能代码(大部分现存的开源库都是用C/C++代码编写的),则直接使用即可;
NDK开发常用于驱动开发
、无线热点共享
、数学运算
、实时渲染的游戏
、音视频处理
、文件压缩
、人脸识别
、图片处理
等; -
为了
效率
更加高效些,将要求高性能的应用逻辑
使用C/C++
开发,
从而提高应用程序的执行效率
;
但是C/C++代码虽然是高效的,在java于C/C++相互调用
时却增大了开销
; -
基于安全性的考虑。
防止代码被反编译
,为了安全起见,
使用C/C++语言来编写重要的部分,以增大系统的安全性,
最后生成so库(用过第三方库的应该都不陌生)便于给人提供方便;
(任何有效的代码混淆对于会smail语法的高手,
反编译apk都是轻而易举的) -
便于移植。
用C/C++写的库可以方便在其他的平台上再次使用;
可以借助 source insight 这个工具对源码进行查看!
-
JNI其实就是一个头文件,jni.h,
定义了很多数据结构
和变量
;
网友评论