android 开发jni,图文详解android中JNI开发步骤总结

JNI是java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他编程语言,只要调用约定受支持就可以了。使用java与本地已编译的代码交互,通常会丧失平台可移植性。

1edb2392982eff5d3688dee5ee605f68.png

这几天一直在研究JNI的开发过程,顺便把NDK环境搭建一起总结下。在Windows环境下开发jni需要c/c++编译器的支持,网络上我看很多人使用cygwin。呵呵我不是很喜欢使用它,感觉安装起来挺麻烦的。我使用GNUStep。

下载gnustep

90f9de636ef5fd85a940ac0770a1fa4f.png

下载安装后,验证是否成功。打开GNUstep->Shell,输入make -v 和 gcc -v命令,如图所示。

f09ecc6c0122eedb3678b90ab14e4533.png

下载NDK,下载完后解压即可。

配置ndk环境变量,gnustep是模拟Linux的环境的,打开gnustep的安装目录下的G:\\softinstall\\GNUstep\\GNUstep\\GNUstep.conf文件,添加以下内容:

8b0f567b337db45274d2b20238a0f884.png

说明如果不知道ndk目录在linux下应该是在哪里,你可以打开gnustep的命令窗口,输入mount,就可以找到对应的盘符。

验证环境变量,如下图。

1b7be51e94c701b576aa409653307e76.png

以上就配置成功了。

下载进入正题啦。

Jni的开发步骤

打开eclipse,新建工程名为testJni。在activity中添加以下代码

复制内容到剪贴板代码:

b223a7322a2c76160abd928f553d2a69.png

编译后的文件在bin目录下,通过javah命令生成c/c++的文件头。如下图

c7d87e59e697243a36395bd63baa0552.png

会在项目目录下生成jni/com_xzw_jni_TestJni.h。

头文件代码如下:

9602575f7b51539e311efcd00f1dde0a.png

这里我们可以根据头文件编写c代码

361cf4eb86b83b642441bd2a68756ae0.png

接下来编写 Android.mk,该文件可以直接从NDK的samples下的hello-jni的jni文件下直接靠过来改改就可以了。也贴下代码哈。

7b00ad77cb117386b8b6336f3c04d82a.png

其中你只需要该LOCAL_MODULE和LOCAL_SRC_FILES就可以了。

说明:LOCAL_MODULE是描述模块的,用来给java调用的模块名,会生成对应的libtestJni.so

LOCAL_SRC_FILES就是源文件啦,多个文件空格隔开即可。

接下来,我们要开始编译生成so文件咯。

打开gnustep的命令窗口,进入到项目底下,输入$NDK/ndk-build命令,即可自动生成libs/armeabi/libtestJni.so文件。

5a4bca528093410e90b12b1180732b48.png

接下来就是java调用了。直接上代码

4a8ed0ff9f22f56382c57987b0e76154.png

运行结果如下

6b91503313ffce450ae25705f78ae9e9.png

以上就是jni的开发步骤了。

在这里我还要补充下:

在我们开发过程中,改一个c/c++的文件,我们都要手动去编译一下有点儿麻烦。这里我们可以使用让eclipse帮助我们自己编译。

右击jni工程的properties-->Builders-->NEW -->;Program 可以看到以下内容:

2100a6d728a61748aff3ad623339f911.png

argument:--login -c "cd /e/myWorkSpace/android/hellJni && $NDK/ndk-build"

切换到Refresh 标签页

42e5f430e47761ac04ec8a13a87e4041.png

切换到Build Options标签页

5b9f36d8d809f99224e9bc1a5c85aa13.png

这样就完成了配置,点击确定可看到控制台自动编译程序了

4f78ab7f9ad0c4ffa90576876f2a9d68.png

JNI开发需要 下载gnustep和配置ndk环境变量,  本文主要是介绍android中JNI开发步骤,JNI开发   步骤详细请查看上文中图文详解,本篇文章还简单补充了一个修改的内容,修改一个c/c++的文件的图文详解内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值