Android-JNI环境搭建和调用流程+小demo

JNI的调用流程和环境搭建

原创:http://blog.csdn.net/xueyingpiaoran/article/details/8747294

一、JNI环境搭建

Ø 基本环境

windowsXP系统; Eclipse开发工具; Java编程语言

Ø 工具

1. NDK交叉编译的工具。用于在windows环境下模拟linux环境,编译用于linux环境下的c库。

下载地址:http://developer.android.com/tools/sdk/ndk/index.html

下载android-ndk-r8e-windows-x86.zip 包。

2. Cgywin windows模拟linux系统环境的模拟器。用于在windows下模拟linux系统。

下载地址:http://cygwin.com/setup.html

3. CDTEcilipse中的插件,用于高亮C/C++代码

下载地址:http://www.eclipse.org/cdt/

Ø 搭建流程

1. 解压NDK工具包

使用解压工具把android-ndk-r8e-windows-x86.zip包中解压出来的android-ndk-r7b文件夹放到C根目录下。

2. 安装Cgywin

① 双击开始安装。

② 进入下图界面的时候,选择第一项则会从网络上下载ndk的安装包安装该工具,选择第三项的话选择则从本地已准备好的安装包中安装该工具。

Android-JNI环境搭建和调用流程+小demo_第1张图片

③ 进入下图界面的时候,选择的安装目录不要包含空格或者中文,然后下一步。

Android-JNI环境搭建和调用流程+小demo_第2张图片

④ 进入下图界面,选择安装工具的网络路径,然后下一步。

Android-JNI环境搭建和调用流程+小demo_第3张图片

⑤ 进入下图界面的时候,选择要安装的包,根据具体情况选择。本项目中把Devel和Shell选择为install,然后下一步。

Android-JNI环境搭建和调用流程+小demo_第4张图片

⑥ 进入下图界面表示安装成功,点击完成结束安装。

Android-JNI环境搭建和调用流程+小demo_第5张图片

3. 安装CDT插件

Eclipse菜单中选择help->Install New Software->Add添加CDT的本地包或者网络安装地址安装CDT插件。

Ø 配置环境变量

1. 进入cgywin的安装目录,找到etc目录下的profile文件。

2. 打开profile文件,找到第32行的PATH

3. 加上“/cygdrive/”+“android-ndk-r7b文件夹所在的路径”+“:”

Eg:我的android-ndk-r7b文件夹在C盘的android-ndk-r7b-windows文件夹中,则PATH配置路径为:

PATH="/usr/local/bin:/usr/bin:/cygdrive/c/android-ndk-r7b-windows/android-ndk-r7b/:${PATH}"

Ø 验证安装是否正确

1. 双击桌面上的打开cygwin终端。

2. 输入命令行make -v 出现下图界面表示cygwin安装成功

二、JNI调用流程

Ø 在java代码中定义一个native的方法

Ø 使用根据方法签名,在c文件中实现这个方法

Ø 编写mk文件

Ø 在cgywin终端进入工程的/bin/classes/目录下,然后使用ndk-build命令,编译动态库

Ø 在java代码中加载c文件生成的动态库

Ø 调用本地方法

三、JNI调用CDemo

【调用c中的代码,返回 H ello from c!字符串】

1. 创建NDKDemo工程。

2. 在java代码中定义一个native的方法。

3. 使用javah创建方法签名。根据方法签名,在c文件中实现这个方法。

① 进入工程的classes目录下,执行 “javah 包名.类名” 命令。


② 得到方法签名头文件。


③ 在工程中创建 jni 目录,把得到的方法签名的文件放到该目录下。创建C文件。


④ 在C中使用” ”把头文件引入到项目中来。并使用头文件中的方法签名来作为c中的方法的名字,编写C代码。

Android-JNI环境搭建和调用流程+小demo_第6张图片

4. 在jni目录下创建Android.mk文件,编写mk文件。

Android-JNI环境搭建和调用流程+小demo_第7张图片

5. 在cgywin终端进入工程的/bin/classes/目录下,然后使用ndk-build命令,编译动态库。


6. 在java代码中加载c文件生成的动态库。

① 刷新项目。出现如下图目录:可知库的名字为“Hello


② 在java代码中加载c库。


7. 调用本地方法。

Android-JNI环境搭建和调用流程+小demo_第8张图片

8. 演示效果。

Android-JNI环境搭建和调用流程+小demo_第9张图片

你可能感兴趣的:(Android-JNI环境搭建和调用流程+小demo)