JNI 与 NDK

来源:互联网 发布:iphone连接电脑软件 编辑:程序博客网 时间:2024/06/09 17:12


JNI 与 NDK


一、前言

JNI是Java调用Native机制,全称为 Java Native Interface,是Java 语言的特性,换句话说JNIAndroid没有关

,在PC上开发Java的应用,如果运行在Windows平台使用 JNI是是经常的,比如说读写Windows的注册表。


NDK是Google公司推出的帮助Android开发者通过C/C++本地语言编写应用的开发包,包含了C/C++的头文件、库文件、说明文档和示例代码,全称 Native Development Kit,但是Android并不支持纯C/C++编写的应用,同时NDK提供的库和函数功能很有限,仅仅处理些算法效率敏感的题。

另外,NDK多了一个把.so和.apk打包的工具而JNI开发并没有打包,只是把.so文件放到文件系统的特定位置。(这个也是相当重要的)

二、为什么要使用NDK


(1)代码的保护
由于apkjava层代码很容易被反编译,而C/C++库反汇难度较大。

(2)可以方便地使用现存的开源库

大部分现存的开源库都是用C/C++代码编写的。


(3)提高程序的执行效率

将要求高性能的应用逻辑使用C开发,从而提高应用程序的执行效率。


(4)便于移植

C/C++写的库可以方便在其他的嵌入式平台上再次使用。

NDK的这个特性既有利于代码的重用,也可以在某种程度上提高程序运行的效率


三、JNI native方法实现步骤


(1)在Java中声明native()方法,然后编译(javac); 

(2)用javah产生一个.h文件; 

(3)编写包含.h文件的c文件

(4)编译c文件

(5)使用编译成功的so文件。


四、使用NDK 编写代码步骤

(1)编写Java代码

(2)编写相应的C/C++代码

生成相应的.h文件

编写相应的.c文件

(3)编译xx-jni.c 生成相应的库

编写Android.mk文件

生成.so共享库文件

(4)重新编译XXJni工程,生成apk




 







0 0
原创粉丝点击