//=====================================================================
//TITLE:
// 图文详解如何搭建Windows的Android C++开发环境(一)
//AUTHOR:
// norains
//DATE:
// Thursday 14-April-2011
//Environment:
// Cygwin 1.7.9
// Android NDK r5
//=====================================================================
1. 下载Android NDK
正常来说,我们可以从官网下载NDK,不过似乎一直以来,http://developer.android.com/都无法打开,所以还是通过搜索引擎来随便搜索一个下载吧。为方便大伙,我这里给出一个直接下载网址:http://dl.google.com/android/ndk/android-ndk-r5b-windows.zip。不过,虽然我是从这里下载,但并不代表当各位朋友看到这篇文章时,还能够继续使用。
2. 解压NDK
将下载回来的zip文件解压。我这里的路径是:D:/ProgramFiles/Android/NDK。虽然路径是任意的,但尽可能不要包含有空格。
3. 下载Cygwin
Android是用linux核心的,注定为其编写的程序不可能使用微软的Visual Studio之流,何况Google也推荐采用linux开发C++程序。可问题在于,用Windows的人实在太多了,即使是程序员群体也是如此。那么,这是否意味着我们必须要转向linux呢?其实没必要。我们只要下载一个cygwin即可解决问题。
这个cygwin究竟是何方神圣?它其实是linux工具的合集。它可以在windows下搭建一个linux的环境,让你可以在windows下进行linux的程序开发。其官网网址为:http://www.cygwin.com/,大家可以自行去下载。只不过该软件必须要用官网的setup.exe文件进行下载,而网络上也无法找到完整的cygwin,所以直接带给我们的结果就是,没有了常用的下载软件,只能慢慢地龟速等待。
点击Setup.exe程序,会弹出一个下载方式选择的对话框。因为我习惯于备份安装文件,以方便第二台机器安装,所以选择的是第二项:"Download without installing",如图:
在一系列的"下一步"之后,会到一个选择下载组件的对话框。为了避免以后会出现莫名奇妙的问题,我建议还是全部选择install,如图所示:
以install方式下载整个cygwin的话,大小大概在1.7G左右,所以注定这是一个比较漫长的过程。特别是不能采用我们平时的下载工具,并且服务器在国外,更加剧了耗时的长度。
4. 安装Cygwin
还是依然点击setup.exe这个程序,不过这次我们选择的是:"Install From Local Directory",如图:
接着选择安装的目录,我这里是"D:/ProgramFiles/Cygwin",如图所示:
再接下来呢,选择的就是你下载回来的Cygwin包的路径了,而我这里路径是"D:/Tools/cygwin",如图所示:
可能有朋友无法确定自己的安装路径,其实很简单,本地安装包路径就是setup.ini这个文件所在的文件夹。
紧接着的安装组件还是和之前一样,全部选择为install。点选下一步之后,就等着漫长的安装过程的结束吧,如下图所示:
5. 设置环境变量
安装完毕之后,为了能够方便编译NDK,最好是设置相应的环境变量。打开cygwin的安装目录下的home文件夹,然后进入到相应的用户名中,如果你发现该用户名下有.bash_profile文件,那么接下来就简单多了,直接用记事本打开该文件,然后在文件末尾添加如下文字:
#创建NDK的路径,在windows中我的路径为:D:/ProgramFiles/Android/NDK
NDK_ROOT=/cygdrive/D/ProgramFiles/Android/NDK
#添加到PATH环境变量中
export NDK_ROOT
保存之后,打开cygwin,在命令行输入:cd $NDK_ROOT。这里注意,不像windows下的CMD,这里一定是区分大小写的。如果不出意外,就会进入到我们NDK的安装目录了。
如果相应的用户名文件夹中没有改文件,可能问题就没那么简单了。如果你在该用户名下建立一个.bash_profile ,并添加了相应的文字,然后如上面所说一切正常的话,那么恭喜你!但事实上,往往不是那么顺利。很可能你会发现,即使我们在用户名下建立了该文件,但似乎环境变量根本没有成功设置。这个很可能是用户名所在的路径设置不对,要检验路径,直接在cygwin输入pwd即可。
比如,我安装完毕之后,输入pwd,画面显示:
这意味着,如果我将.bash_profile放到D:/ProgramFiles/Cygwin/home/Administrator 是没有任何作用的,而应该放到D:/WorkPlace !
那么,我们有没有办法更改这个目录呢?答案当然是可以,只要修改相应的环境变量即可。在"我的电脑"点击右键,然后按如下路径进行选择:属性 -> 高级 -> 环境变量。在上面或下面的框中,找到HOME这个环境变量,更改为相应的数值即可。更改之后,重启电脑,将.bash_profile拷贝到HOME变量指向的路径,启动cygwin,那么就可以生效了。这里需要注意,一定要重启电脑,否则这HOME变量之前的数值可能还会影响到cygwin。
更改HOME变量数值之后,输入pwd,很明显看出,路径已经改变,NDK_ROOT变量也起作用了,如图:
6. 编译程序
接下来,我们就来编译一个程序试试。
首先,在cygwin命令行界面进入到D:/ProgramFiles/Android/NDK/samples/hello-jni路径。如果对命令行不熟悉的朋友,可以输入如下命令:cd /cygdrive/D/ProgramFiles/Android/NDK/samples/hello-jni
然后输入"$NDK_ROOT/ndk-build"进行编译。$NDK_ROOT是之前在.bash_profile设置的环境路径,而ndk-build是调用NDK的编译工具。如果不出问题,它会生成一个libs目录,并且编译生成的.so文件也会悉数在此,如下图所示:
启动配置好的android的java开发环境,比如说Eclipse + CDT,然后创建一个Android项目,选择Create project form existring source location =D:/ProgramFiles/Android/NDK/samples/hello-jni,确认后即可开始编译并生成apk文件,然后运行该程序即可。关于如何搭建Eclipse + CDT编译环境来编译android程序,我们下一篇文章再详解。
参考文献:
《Cygwin完全下载指南(上)》
http://blog.csdn.net/Lionwoo/archive/2005/08/06/446962.aspx
《Windows平台下搭建Android原生C/C++开发环境 》
http://www.cnblogs.com/FinalKiller/archive/2009/07/11/1520900.html
《Android Beginners: NDK Setup Step by Step》
http://mindtherobot.com/blog/452/android-beginners-ndk-setup-step-by-step/
《windows系统集成cygwin与Eclipse与使用Android NDK r5》
http://student.csdn.net/space.php?uid=121497&do=blog&id=57864