平时在开发中,或多或少都会用到JNI方面的技术,比如我们项目中,消息的加密和解密就是通过C来实现的,然后打包为.so动态库,并提供Java接口供应用层调用,这么做的目的主要就是为了提供应用的安全性,防止被反编译后被分析加密的逻辑。
接下来就要介绍JNI和NDK的区别,怎样创建一个项目开发JNI。
JNI与NDK
JNI
Java Native Interface
,即Java本地接口,使用JNI可以使得Java与本地其他类型语言(如C、C++)交互。
JNI是 Java调用Native语言的一种特性,JNI是属于Java的,与 Android无直接关系。
NDK
Native Development Kit
,是Android的一个工具开发包。
NDK是属于Android的,与Java并无直接关系,只是通过NDK可以快速方便的使用JNI,开发C、C++动态库。
-
JNI与NDK的区别,具体可以参考该文章
开发JNI
开发JNI,一般都有两种途径:
- Java项目直接引用生成好的动态库,动态库的具体C、C++代码在其他地方编写变生成动态库(常见的为在Window平台上的VS编写,在Mac平台上的Xcode编写,或者直接用命令行编写),引用第三方库大多就是采用这种方式
- Android Studio项目中通过NDK实现JNI
Java项目调用Xcode编译动态库
-
创建Xcode项目,选择Library,选择为C++库
网友评论