0

Android NDK开发(一)——环境搭建

Android下的NDK开发是Android开发中不可或缺的一部分,通过Google提供的NDK套件,我们可以使用JNI这座桥梁在Java和C/C++之间建立联系(互相调用)。那么,为什么在Android开发中需要了解NDK开发呢?诚然,这些原因有很多说法,在我总结来是这样的。C/C++是比Java还要古老的编程语言,由于其古老的特性,导致早期有很多优秀的类库出现,譬如处理视频编解码的FFMPEG类库,这些复杂的类库早就被C/C++编写过,我们在处理视频编解码的时候没必要重复“造轮子”,所以能直接拿来用的就直接拿来用,但是这个直接法很难做到,因为Java的编译环境的原理跟C/C++的不同,所以就必须找个中间者为Java和C/C++代码建立关系,这个中间者就是JNI。还有一个重要的原因就是效率问题,Java是跨平台的语言,在不同的平台有不同的JVM实现,Java源码需要首先编译成.class文件,然后让.class文件运行在不同的JVM解释执行上,这样的步骤造成了效率的浪费,而不同的是C/C++,可以直接编译成特定平台的二进制文件,直接运行在特定平台上,效率比Java高效很多,所以在某些特定的环境下,还是需要使用C/C++来解决效率问题,Java只负责处理C/C++返回来的结果就可以,这样的话Java和C/C++互调就显得相当重要了。

做NDK开发前最好需要了解一下C/C++的语法,通常这部分的代码不需要Android程序员编写,但是Android程序员最好能看懂C/C++源码,这样做会事半功倍一点,关于C/C++语法的学习不是这里的重点,大家感兴趣的话可以直接找资料学习,请从柜底抽出大学教材《C语言程序设计——谭浩强》,拍拍上面的灰尘,随便过一遍^.^

一、明确一些基本概念

1,JNI

Java Native Interface Java 本地开发的接口。JNI 是一个协议,这个协议用来沟通java代码和外部的本地代码(c/c++)。通过这个协议,java代码就可以调用外部的c/c++代码,外部的c/c++代码也可以调用java代码。

2,CDT

C/C++ Develop tools,C/C++开发工具。是Eclipse上的一个插件,主要是让C/C++代码能够高亮显示。这个组件不是必要的,除非你是C/C++高手,喜欢在记事本上写代码,对于一般的程序员还是装一下吧,高亮显示很重要的。

3,NDK

Native Develop Kits,本地开发套件。这个套件是非常重要的,是Google提供给我们的一个在Android上开发JNI程序的工具集,有了它会使得开发高效的多。

4,cygwin

Windows下的Linux模拟器。大家知道Android是基于Linux内核的操作系统,所以在编译C/C++源码的使用得使用Linux环境,将其编译成Linux特定平台的文件.so或者.a。好消息是,NDK高版本中提供了Windows下开发套件的支持,cygwin可以不使用,直接在Windows下平台编译也是可行的,但是为了显示学习,最好还是需要了解一点的。

二、NDK环境搭建

1,安装CDT

      如果是使用的是从Android Develop官网上下载的集成了ADT一整套的IDE的话,请跳过这一步,因为ADT中已经集成好了CDT插件,直接使用就可以了。如果使用的是传统的Eclipse自装插件的方式的话,有两种方式可供安装CDT。
(1)下载CDT插件进行安装。在Eclipse社区官网可以找到下载链接https://eclipse.org/cdt/
(2)在线安装。步骤如下:
打开Eclipse工具栏Help–>install new software
选择 Helios- http://download.eclipse.org/release/helios ,等待展开,选择Programing language

选择c/c++ 开发工具

一路next下去,同意licenses。

安装成功会提示是不是确认重启eclipse,重启就完成安装。

2,安装cygwin

      NDK需要运行在linux环境下,cygwin是windows下模拟linux的一个工具。Cygwin是一个程序,支持很多插件。可以去cygwin的官网上下载http://www.cygwin.com/双击安装,也可以从CSDN资源页上下载我上传的资料包,里面包含cygwin的安装程序和安装包,地址是:http://download.csdn.net/detail/lee_tianya/8235323

        选择安装方式请注意了,一般可以选择从Internet上在线安装,不过速度很慢,而且中途不能断开,如果网速不好中途断开了,那么就必须从头开始下载,非常不舒服。第二种方式是本地安装,先下载好安装所需要的文件放在本地磁盘上,然后选择安装目录即可,我这里是本地安装。
选择安装目录的时候请注意:安装目录不可以出现空格,最好不要出现中文等非英文字符。

安装完毕后 ,桌面会出现一个快捷图标,双击快捷小图标,打开cygwin。

首先程序会初始化

敲入命令

Make –v

显示出来 GNU Make 的版本 ,说明我们的cygwin模拟的linux编译环境 模拟成功了.

3,安装NDK

首先翻墙上Google Android Develop的官网去下载NDK,地址是http://developer.android.com/tools/sdk/ndk/index.html


我这里选用的Windows版本64位的r10d版本的ndk,是当前最新版本,android-ndk-r10d-windows-x86_64.exe,下载完成后点击exe文件,会自定解压到当前目录下,这个过程比较漫长,可见升级造成安装的过大啊,好,解压完毕之后我移动E:/NDK目录下了。

做完上面的一些步骤后,环境基本上是搭建完成了,现在我们使用cygwin模拟Linux环境下,进入Windows路径E:/NDK/android-ndk-r10d下,执行ndk-build脚本。

第一步:进入根目录找到根目录下的cygdrive文件,该文件对应的是Windows下的所有盘符:

第二步:进入ndk所在目录:

第三步:执行ndk-build脚本

通过上面的步骤,我们就可以使用ndk-build脚本了,但是这样的过程是在是太繁琐了,使用起来是非常的不方便,那么下面我们来使用一下简便的方法吧,配置文件。

为了方便直接在命令行里面使用ndk-build,需要给cygwin的环境变量里面添加ndk的目录

首先

我们在cygwin安装的目录下找到etc/profile文件,这个文件就是cygwin的配置文件,用记事本打开这个文件,找到如下一行:

然后

我们在cygwin的控制台上找到ndk的解压路径

接下来

我们复制这个路径到Path中,注意Linux环境变量中的路径分割使用英文冒号“:”来区分

最后
       检测是否配置完成,在cygwin控制台下输入“ndk-build”命令
若命令行显示的是如上图所示的信息,说明配置完成了,可以使用了,若不是这种情况,请根据文章的描述再进行一次配置。
        好了,NDK开发中的环境搭建到此就结束了,下面就可以使用NDK环境来开发了,关于NDK开发,后续的文章会慢慢介绍。
转自:http://blog.csdn.net/allen315410/article/details/41800955

 

天边的星星