JNI的环境搭建和简单的初步使用(2)

来源:互联网 发布:国密算法 公开 编辑:程序博客网 时间:2024/09/21 08:17

dk-build环境搭建好以后,我们就需要来试试环境是不是真的搭建好了

①首先打开ecplise,新建一个工程JNITest

建好以后在MainActivity中编写一个叫sayHelloWorldFromC()的本地方法(这是一个用native关键字声明的抽象方法,并不需要实现它,我们需要用C语言来实现它)

② 新建一个叫jni的文件夹


③新建一个名字叫Hello.cc文件,并输入如下代码


其中jstring表示返回的类型是String类型,方法的命名规则是:Java_包名_包名_...._类名_方法名,

我们一开始声明的一个方法

它在

下面.所以方法会如此声明

这个就以我们要返回的字符串,可以任意填写你想要返回的字符串

(其他的参数,返回类型为何如此写,不在讨论范围,可以在网上查找资料)

,新建一个叫Android.mk的文件到jni目录下,具体可以看第②步的视图图片

里面输入一下信息


这些信息怎么写,怎么来?

可以找到ndk目录下的docs目录


进入后可以看到一个叫的文件

这里就是叫你如何写android.mk

我们打开这个文件,找到这里


把cut here之间的带面复制下来就可以了

其中

第一行表示编译后的文件的名字

第二行表示的是我们一开始在jni创建的c文件的名字

其他的不需要更改

mk文件也创建好以后,就可以编译了,这里只介绍cygwin的编译,windowscmd编译类似,就不说了

编译过程:

打开桌面的cygwin,进入你的项目文件目录(项目文件的路径可以右击ecplise中的项目,选择Properties就可以看到路径了,还有路径的斜杠必须是反斜杠


此时输入:ndk-build就可以编译了(我的显示可能不一样,因为我的已经编译过了,如果出现错误,说明你的c文件编写错误或者是你的android.mk错误,需要重新检查下)


看上图,最后一句话的意思是告诉你在你的项目里,它给你生成了一个文件,在这里(需要选装ecplise中的项目,F5刷新才会显示出来)

⑥编译好以后你就成功了,剩下的就是调用这个方法libHello.so文件,让它和你的本地native方法关联起来

MainActivity中输入


然后就可以使用这个sayHelloWorldFromC这个方法了

具体效果:


//源码地址:http://pan.baidu.com/s/1o6Fd4Ye


这里只是简单的使用,真正返回一个字符串当然不需要用C语言来编写,但是对于一些特效,一些其他Java语言编写起来相当吃力的功能,就需要使用到JNI技术

关于JNI的更多技术资料请到网上查询和了解

6 0
原创粉丝点击