重启完Ecplise后,点击菜单"Window"->"Preference",打开了配置窗口,在左边选中Android,在右边输入 Android SDK的路径(即Android SDK的解压目录),点击"OK",如图5。至此环境配置完毕。
图5.配置SDK路径
至此,Android的Java开发环境搭建完毕。
2.2 本地编译开发环境——Android NDK、Cygwin
Android 应用程序开发采用Java 编程语言,但OpenCV 是用C/C++编写的程序,这就涉及到Java 与C/C++混合编程、Java 程序与C/C++程序互相调用的问题,故需要利用JNI 编写本地代码,并采用Android NDK 编译本地代码。而NDK编译本地代码需要在Cygwin模拟的unix/linux环境下进行。因此,在Windows 系统下,还需要安装与配置Android NDK与Cygwin。
2.2.1 交叉编译环境Cygwin
Cygwin是一个在windows平台上运行的unix模拟环境,它对于学习unix/linux操作环境,或者从unix到windows的应用程序移植,或者进行某些特殊的开发工作, 尤其是使用gnu工具集在windows上进行嵌入式系统开发,非常有用。Cygwin的主要目的是通过重新编译,将POSIX系统(例如Linux、BSD,以及其他Unix系统)上的软件移植到Windows上。
下载 Cygwin1.7 或更高版本用来在Windows 环境下模拟Linux 环境,在此Linux 模拟环境中利用NDK 对本地代码进行编译。安装cygwin,从Devel 树结构中获得autoconf2.1、automake1.10、binutils、gcc-core、gcc-g++、gcc4-core、gcc4-g++、gdb、pcre、pcre-devel、gawk、GNU Make 3.81共12个包,由于这些包都在Devel中,为免漏选,可直接将Devel选为“Install”,如图6。
图6.选择需要下载安装的工具包
完成安装后在桌面上会出现cygwin程序的快捷方式,运行此程序,在命令行窗口输入:cygcheck -c cygwin命令,会打印出当前cygwin的版本和运行状态,如图7,然后依次输入gcc –version,g++ --version,make –version,gdb –version等进行测试,如果都打印出版本信息和一些描述信息,如图8,则cygwin安装完成。此程序相当于Linux 模拟环境下的shell,完成命令行的输入。
图7.cygwin的版本和描述信息
图8.工具包的版本和描述信息
2.2.2 Android NDK及其配置
Android NDK ,即Android Native Development Kit,因此又被称为“NDK”。在此之前,Android平台的第三方应用程序均是依靠基于Java的Dalvik特制虚拟机进行开发的。NDK的公布可以让开发者更加直接的接触Android系统资源,并使用传统的C或C++语言编写程序,并在程序封包文件(.apks)中直接嵌入原生库文件。 Android程序运行在Dalvik虚拟机中,NDK允许用户使用类似C / C++之类的原生代码语言执行部分程序。
将下载的NDK解压后需要进行配置。在 Windows 系统中新建一环境变量,将其命名为NDK,变量值定义为NDK 所在文件夹的路径,但其目录结构必须是Cygwin形式。在Cygwin 所创建的Linux 模拟环境中,目录结构与Windows 环境不同,比如E 盘下“E:\undergrdt\tools\android-ndk-r8”文件夹,在Cygwin 模拟Linux 环境中的目录就是“/cygdrive/e/undergrdt/tools/android-ndk-r8”。
配置完成后,在Cygwin中输入命令“cd $NDK”,则会指向NDK所在的目录,如图9。
图9.cygwin指向NDK所在目录
2.2.3 利用Android NDK本地编译
Android NDK提供了一系列的工具,可以帮助快速开发C(或C++)的动态库。Android NDK集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差异,只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),利用Cygwin就可以创建出so。SDK可以自动地将so和Java应用一起打包成apk。 OpenCV基于智能手机的人脸检测系统设计(3):http://www.youerw.com/jisuanji/lunwen_8324.html