第一个JNI程序

前言

之前写了一篇怎样搭建NDK环境。但是,在搭建完成后我们发现,我们并不懂如何从头开始构建一个jni程序。在网上查了很多资料,更多实在2012年r7版本之前的步骤。现在版本已经到了NDK的r10,其中继承Cygwin。所以,步骤上还是有所不同的。我下面来给大家介绍一下如何创建第一个JNI程序。

第一个JNI程序

第一步

在eclipse中创建一个Android工程,取名为JNItest。包名为com.ye.jnitest。
在MainActivity.java的onCreate函数中删除setContentview。添加下面几行:
这里写图片描述
其中JNItest()是我们在后面声明的函数。

第二步

在MainActivity.java文件中,声明一下JNI相关的函数。
这里写图片描述
第36行,是声明我们需要调用的用c/c++实现的函数。
第37行,是声明该函数所在的库。

第三步

在工程名点击右键,Android Tools->Add Native Support..会出现下面窗口。我们把默认的工程名改为我们刚刚声明的函数所在库的名字。
这里写图片描述
单击Finish。我们工程文件夹下就会添加jni相关的文件夹。
这里写图片描述

第四步

打开jni文件夹,你可以看到两个文件:Android.mk和JNI_test.cpp
Android.mk类似于linux系统中的makefile。
这里写图片描述
LOCAL_MODULE是你刚刚输入的库名称。
LOCAL_SRC_FILES是你生成库所需要的源文件。
我们参照Hellojni程序,在jni文件夹中创建一个JNI_test.c。并把LOCAL_SRC_FILES后面的值改为JNI_test.c。
这里写图片描述

第五步

在JNI_test.c中,把Hellojni相关的代码复制过来。
但是有一点非常重要。这也是JNI中你写的c/c++函数是否能被正确编译和识别的最关键的地方。就是你在文件中所写的函数名。在jni中,函数名的命名规则是:Java+“包名”+“文件名”+“函数名”。这里的包名、函数名都是指调用你所写的c/c++函数地方的包名、函数名。
这里写图片描述
这样,保存后点击右键run as->Android application。进行编译和运行。就能看到我们预想的结果了。
这里写图片描述

结语

这样我们第一个JNI程序就写完了。大家可能会遇到Unable to launch cygpath. Is Cygwin on the path?的报错。可以参见我之间搭建NDK环境的帖子。http://blog.csdn.net/ddjq12/article/details/46827097
后面我还会写一篇我如何仿写android-serialport-api,并分享一下我的心得。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值