在一起学Android的时候老师没讲JN,甚至连ndk都没有讲。只是提了一下,老师说,一百个做Android的里面只会有一个用到JNI,这个用jni的同学也是在项目的个别功能中用到了一点点,所以就没给我们讲。没想到我前几天在项目中用到了,于是就整理一下。第一次写博客,好紧张,作为一个程序员,作文一向不及格的程序员,写出来大家不要见笑。
这次博客我会分几篇来写,同时我会附带上我的代码。
首先呢,我们要了解一下c对c一点都不了解的同学,自己去找个视频、书什么的看一下就好了。不需要懂太多,了解一下就可以了。这里给大家介绍一个c开发的工具,如果需要可以下载下来用。WY_DEVCPP_5B1107.zip
闲话不多说,我们直接来干货。
安卓开发应用层的代码是用java写的,而底层的代码使用c/c++写的,有很多时候我们在应用层实现不了的功能都需要在用c来写。或者直接调用人家写好的.so文件。那就要用到我们说的jni。我这里就先介绍一下直接用c写,然后再给大家介绍怎么用.so文件。
android中java和c互调分为以下几步:
1, 安装配置ndk,这个比较简单,我觉得比配置jdk还要简单。
project->prefenences->Android->ndk->Browse->选择自己的ndk目录->Apply->ok
创建一个JNI项目的步骤
1,创建一个Android工程
2,在java代码中声明一个native方法
3,在java代码中调用该方法
4,在Android工程的根目录下建一个文件夹jni,编写c代码文件名要对应
5,编写Android.mk文件,(复制出来,然后修改就可以了)
6,java代码load动态库,调用native方法
7,NDK编译生成动态链接库编译命令,ndk-build
步骤写的都很清晰,而且我还附带了代码,这里就不多的啰嗦了。第7步,我在简单的提一下。
在项目的根目录,按住shift键,反键,选择“在此处打开命令窗口(w)”,打开命令窗口(黑窗口),然后输入ndk-build
然后如果出现.so那就是可以了。
看完博客还是不太明白,不要紧,可以下载源码看看。