Android-JNI的简单使用

什么是JNI那?
JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他编程语言,只要调用约定受支持就可以了。使用java与本地已编译的代码交互,通常会丧失平台可移植性。但是,有些情况下这样做是可以接受的,甚至是必须的。例如,使用一些旧的库,与硬件、操作系统进行交互,或者为了提高程序的性能。JNI标准至少要保证本地代码能工作在任何Java 虚拟机环境下。
这是百度百科上面的原话,专家的介绍,大家都懂的。下面有一张关于JNI的知识总结图,更利于大家对JNI的理解
Android-JNI的简单使用_第1张图片

使用JNI需要先配置NDK 就像配置SDK一样,至于NDK是怎么去配置的,因为时间有限,就请大家自行去百度,我这里就不多说了。

理论上面的知识就到这里,前人已经替我们总结的非常好了,如何在前人的理论基础上面去实现它,写出第一个自己的JNI项目才是本文想去说的。
OK Come On;

创建一个项目 HelloJni ,为layout创建一个点击事件 onButtonClick
Android-JNI的简单使用_第2张图片
然后在Activity中创建本地方法

Android-JNI的简单使用_第3张图片

然后就该创建我们的C语言方法了。右击我们的项目app->New->Folder->JNI Folder
Android-JNI的简单使用_第4张图片
这样就生成了一个专门用来存放JNI文件的文件夹
Android-JNI的简单使用_第5张图片
在jni文件夹中创建一个C语言文件Hello.c
Android-JNI的简单使用_第6张图片
Hello.c内部代码
Android-JNI的简单使用_第7张图片
然后在jni文件夹中创建一个Android.mk文件如图,用于进行NDK的编译
Android-JNI的简单使用_第8张图片
LOCAL_MODULE为编译之后生成的文件名称
LOCAL_SRC_FILES为被编译的文件名称
这里要注意,默认的情况下JNI是不支持 X86和Mips的CUP架构的,所以我们需要手动的去添加支持。
创建一个Application.mk的文件,如图
Android-JNI的简单使用_第9张图片
表示支持所有的CPU架构,其实主要就是X86与Mips架构
然后就需要使用NDK去编译项目
打开控制台 cd到该项目的jni文件夹中,使用ndk-build指令(注意我这里是mac os,如果是windows 或者 linux 使用的指令为 ndk-build.cmd)如图所示
Android-JNI的简单使用_第10张图片
这一步完成之后,会发现项目里面多了一些东西
Android-JNI的简单使用_第11张图片
最后我们需要在Java代码之中去引用这个libs
Android-JNI的简单使用_第12张图片

运行代码点击按钮就能简单的实现了一个 Hello JNI 的Toast

源码地址:http://download.csdn.net/detail/u011068996/9061135

站在巨人的肩膀上,我们才能看得更远

你可能感兴趣的:(java,android,jni,C语言,native)