Eclipse 配置NDK环境并简单使用

JNI 与 NDK 的关系

JNI
 - 什么是JNI: Java Native Interface  , 即 java 本地接口
 - 作用: 使用 java 与 本地其他类型语言交互
 - 注意: 
		1,JNI 是 java 调用 Native 的一种特性
		2,JNI 是属于java 的, 与 Android  无直接关系
 - 为什么用 :
		1,实际使用中,java 可能需要与本地代码交互
		2,因为java 是跨平台的,所以java 与本地代码交互能力较弱
		3,采用 JNI特性 增强 java与本地代码的交互
NDK
 - 什么是NDK:Native Development Kit,是 android 的一个开发工具包
 - 作用:快速开发 c、c++ 的动态库,并自动将so与应用一起打包,所以可以通过NDK在android中使用JNI与本地代码交互
 - 注意:
		 1,NDK是属于android的, 与 java 无直接关系
		 2,NDK提供的库比较少,只能用于处理算法效率和 安全敏感的问题
 - 特点:
		 1,效率高,代码安全性高
		 2,功能的扩展性好
		 3,方便代码的复用
JNI 与 NDK 的关系

JNI 的最终的目标,能够把实现与本地代码的交互 的功能。NDK是在android 中实现 JNI的手段。

Eclipse 配置 NDK环境

1, 下载NDK ,配置环境变量

百度搜索 NDK下载,下载后解压。
环境变量中 , 添加 ANDROID_NDK_HOME (注:名字自己取),然后在 path 后面 添加 “;%ANDROID_NDK_HOME” (注意前面有个 ‘分号’)。
打开cmd ,输入 ndk-build 出现如下字符说明环境配置成功
这里写图片描述

2,Eclipse 配置 ndk

打开Eclipse :
第一步,
Window -> Prefernces -> Android -> NDK 选择你的NDK Location的存放路径;
如果选择的NDK路径正确,但依然报出 Not a vaild NDK directory 错误提示,那么需要找到NDK的主目录里,在里面创建一个名为 ndk-build 的 空文件,不需要后缀名;

第二步,
右键你用来开发NDK的项目,选择 Properties -> C/C++ Build -> Environment , 选择 Select ,然后 选择 之前配置的 NDK环境 ANDROID_NDK_HOME , 然后点击OK

第三步,
右键项目, 选择 Properties -> C/C++ General -> Paths and Symbols - Add , 选择 Add,然后点击 File system , 选择NDK路径 ,直到 include 。我的路径如下:
E:\android-ndk-r14b-windows-x86\android-ndk-r14b\platforms\android-9\arch-arm\usr\include
(如果路径最后没有 include 路径的话,需要重新下载一个NDK )
然后点击 OK, 点击 Apply ,OK 即可

3,NDK的简单使用

第一步:
右键项目,选择 Android Tools ,然后选择 Android Native Support,填写 即将生成的文件的名字。
然后自动创建 jni 文件夹 和 .mk , .cpp 文件, 如果要写C代码,需要将 .cpp 文件后缀 改为 .c 。 然后在 .mk 文件中也 将 .cpp 改为 .c

第二步:
在 MainActivity 中声明一个Native 方法(也可单独创建一个类来声明本地方法)。
进入cmd中,用cd命令 进入到 项目的src 路径下, 输入:
javah -jni com.example.jnitext.MainActivity (项目的完整路径)
然后回车,即可自动生成一个 .h 头文件 ,项目右键或者按F5 ,就可以看见生成的 .h 头文件, 然后将头文件拖到 jni文件夹下 即可。

第三步:
打开 .c 文件 ,在添加 代码

# include <com_example_jnitext_MainActivity.h>  //头文件名
# include <stdio.h>
# include <stdlib.h>

然后将头文件中生成的 方法 复制并用添加到 .c 文件中,并实现方法:

# include <com_example_jnitext_MainActivity.h>  //头文件名
# include <stdio.h>
# include <stdlib.h>
//这是复制过来的方法,并实现方法
JNIEXPORT jint JNICALL Java_com_example_jnitext_MainActivity_helloNdk
  (JNIEnv* evn, object obj){
	  return 5;
  }

第四步:
在类中加载动态库并调用 本地方法即可:

//加载动态库
		System.loadLibrary("Hello_jni");
//执行本地方法
		button1.setText("返回的值:"+hello());


、

以上 就是简单的使用 NDK 调用 C代码 ,即 访问本地代码

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值