基于NDK的jni调用

前一段时间在做jni,整理了一份文档,文档已经过一位毫无开发经验的同志的测试,他自己按照我的文档实现了jni的调用,作为jni的入门,希望对你们有帮助。

准备工作:下载NDK,配置环境变量,即将NDK的路径添加到PATH中,同时添加到eclipse的windows->preferences->Android->NDK的NDK Location中。
我先叙述一下总的流程,再分开叙述各步骤的实现。
流程:
第一步:在MainActivity中声明native方法;
第二步:在项目中创建名叫jni的目录,接下来在其中生成.h文件;
第三步:在jni目录中创建.c文件,实现本地方法;
第四步:编译.c文件,生成.so文件;
第五步:在Activity中加载.so文件;
最后,在Activity的oncreate方法中中调用本地方法,运行项目。
实现:
一.在MainActivity中声明native方法:
public native String stringFromJNI();
具体请参考下面的代码:

zf

二.生成.h头文件
1.先在项目中创建一个名叫jni的文件夹。
2.在eclipse中,点击Run->External tools->External tools Configer..,弹出如下的对话框。右键Program,点击new,然后填写以下内容,具体如图所示。
name:原则上可以随便写,我写的是:generate_c_header_file.
Location:单击Variables,选system_path,之后在其后面加 :javah;
这部分内容具体参考下图,路径为android.jar的路径,结合你自己的具体情况填写。
zf

配置完成后,生成头文件:
1)、选中声明本地方法的Activity。2)、单击generate_c_header_file。如下图所示。
刷新项目,头文件就生成了!
zf

头文件中的主要内容如下图所示:
zf

第三步:实现本地方法。
1、右键项目->Android Tools->Add Native Support..,系统会自动给我们在jni目录中生成android.mk文件和.cpp文件。这时头文件也许会提示错误,不用管它,进行第2步。
2、右键项目->properties->c/c++ general->Path and Symbols->add->File System…,找到NDK的目录中的platforms中的相应平台(我的是arm平台)中的include文件夹,选中,点击确定。如下图。
zf

打开.cpp文件,实现本地方法。若有修改android.mk文件的必要再修改android.mk文件。如下图。
zf

第四步:编译.c文件,生成.so文件。
打开cmd,进入项目所在路径,输入命令ndk-build进行编译。然后刷新项目,就会发现多了一个obj文件夹,我们的.so文件就在这里边。
第五步:在Activity中加载.so文件,如下图所示:
zf
最后,在Activity的oncreate方法中中调用本地方法,运行项目。
至此,大功告成。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值