您的位置:首页 > 编程语言 > Java开发

Eclipse环境下通过Cygwin使用NDK编译jni程序

2014-03-04 21:26 435 查看

一、认识Cygwin、NDK和jni

首先来认识一下什么是Cygwin、NDK和jni。

Cygwin:Cygwin是一个在windows平台上运行的unix模拟环境,它对于学习unix/linux操作环境,或者从unix到windows的应用程序移植,或者进行某些特殊的开发工作,尤其是使用gnu工具集在windows上进行嵌入式系统开发,非常有用。本文就是要用Cygwin模拟Linux环境,使用NDK中的编译工具,来编译jni程序。

NDK:谈到NDK,想必大家都会想到SDK(Software Development Kit, 即软件开发工具包 )。SDK一般是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。Android SDK自然就是开发Android程序时使用的软件开发工具包。NDK的全称是Native Development Kit,android NDK官网上是这么说的"The NDK is
a toolset that allows you to implement parts of your app using native-code languages such as C and C++。"意思是说,NDK是一套用来帮助我们在程序中添加C/C++代码的工具集合。通常,我们使用NDK中的编译工具来将C/C++代码编译成库文件。

jni:JNI是Java Native Interface的缩写。jni是为了让java能够调用本地已编译代码(尤其是C和C++)而设计的,只要调用约定受支持,也可以调用其他代码就可以了。

二、为什么要使用jni

使用jni通常有两种原因:一是为了提高程序效率,程序的核心部分使用C/C++开发,而UI部分使用java开发,通过jni调用核心代码,例如一些游戏、视频图像处理软件。二是为了复用已经开发好的稳定模块,提高开发效率。

三、如何使用jni

如何将Cygwin、NDK、jni三者联系起来呢?方法如下:使用Cygwin在windows上模拟Linux环境,在这个环境里使用NDK里的编译工具,将写好的、符合jni规范的C/C++代码(或者其他代码)编译成库文件,然后java程序就可以调用库中的函数了。所以现在有如下三个问题:①安装、使用Cygwin。②安装NDK。③了解jni编程规范。

1、安装使用Cygwin

Cygwin下载地址

安装Cygwin与安装一般软件类似,要注意的有两点:①下载站点地址选择163,速度很快。②在Select Packages界面,点击Devel-Default,使之变成Devel-Install。具体安装过程可以参考《Android NDK安装与配置一文。

如过有Linux系统命令行操作经验,Cygwin使用起来应该是很简单的。需要主要的是,Cygwin环境下,目录结构与Linux类似。而cygdrive目录下的文件夹,则映射到windows系统的各个盘符。如图所示:



2、安装NDK

NDK下载地址

有过嵌入式开发经验的同学应该都安装过交叉编译工具。安装NDK与其类似。下载NDK的压缩包后,将其解压到任意目录,例如我放在了如下路径:E:\SDK\android-ndk-r9c。目录下的ndk-build文件就是我们将要使用的编译器。而所谓的“安装”,其实就是将编译器的路径加入到系统的环境变量。这样,当我们使用编译器ndk-build时,就不必每次都键入完整路径,而可以方便的使用环境变量了。

加入的环境变量如下:



可是试下能不能使用此环境变量。使用cd命令进入改变量指定的目录,发现当前目录更改为指定目录,说明环境变量加入成功。



3、使用NDK编译jni程序

jni程序的编程规范、makefile的编写、库文件的使用方法,可以参考Android
JNI知识简介》 和《Android
开发 之 JNI入门 - NDK从入门到精通》 等文章。这里介绍一下使用NDK编译jni程序的过程。

在Andorid工程中,jni程序源码需要放到工程目录下的jni目录。编辑好代码后,使用Cygwin进入指定的jni路径下,就可以使用编译器进行编译了。编译好产生的库文件(so文件)被自动复制到了/libs/armeabi目录下。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android eclipse cygwin jni ndk
相关文章推荐