Windwos下Android NDK开发环境搭建

1、下载JDK,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

     选择Windows x86(32位)(64位操作系统可以选择安装32位,当然也可以是64位,不过一套环境最好保证所使用的工具是相同位数的)

2、下载 SDK ADT Bundle for Windows,下载地址:http://developer.android.com/sdk/index.html#download,选择32位。

     启动SDK ADT Bundle for Windows中带的eclipse,点击Window->Preferences,可以看到指定SDK的位置已正确指定。

     

 

这时,一个基本的Android开发环境就搭建好了。可以试着建立一个hello world Android应用程序,并运行。

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

4、由于在2步骤中,其中包含了CDT插件,故无需单独再安装此插件。

5、启动SDK ADT Bundle for Windows中带的eclipse,指定NDK的位置:

 

接下来就可以进行Android-ndk的开发。

首先新建一个Android应用程序。接下来,开发方式有两种。一种是用命令行方式,一种是在eclipse中使用图形化方式。

(1)、在其他地方,按照ndk开发的规定,写好c/c++源码,并放在相应地方。

参考:http://developer.android.com/tools/sdk/ndk/index.html

为了构建的的方便,可以把ndk-build所在位置(it is located in the top-level NDK directory)放在环境变量PATH中。

(2)、在eclipse中将现有的Android项目转成可以支持native开发的项目。其方法如下:

      在Package Explorer中选中项目。右键->Android Tools->Add Native Support...,点击Finish完成。这时在工程目录将多出以下几个文件夹。

在jni文件夹中包含如下两个文件。

然后可以在jni中的cpp文件添加代码。

查看工程属性,点击Builders,比一般的工程多了两个东西:一个是CDT Builder,一个是Scanner Configuration Builder。

这时,便可选中工程,点击右键,击中“Build Project”,便可启动CDT Builder来构建native代码。

选中工程,点击右键,击中“Run as Android Application”,首先会构建native代码,然后构建java代码,然后启动程序运行。

 

注意:在下面的配置图中:

  如果不小心选了“Gnerate Makefiles automatically”,则出现CDT Builder运行错误。

在工程目录中会多出一个Default文件夹。

(3)将现有的Android Ndk项目(ndk中的samples),导入eclipse中,并加上Add Native Support。

1.import the ndk project.

2.Add Native Support.

 

上图中的Libary Name中写为“项目中的so文件”。点击finish,就可支持native开发了(实际上自动生成了相应的编译器)。

在上面两种方式中实际使用的ndk中的ndk-build工具编译构建c/c++代码的。我们还可借助Cygwin来编译构建c/c++代码。

安装Cygwin,。

      下载并安装Cygwin,下载地址:http://cygwin.com/install.html

      为了避免全部下载,这里列出了后面开发NDK用得着的包:autoconf、automake、binutils、gcc-core、gcc-g++、gdb、make、cygwin-pcre、gawk、(宁可多选,不能少选).大多数包在Devel下面。上面可以在search栏进行搜索来找到。

  然后开始选择安装这些包吧,点skip,把它变成数字版本格式,要确保Bin项变成叉号,而Src项是源码,这个就没必要选了。

  运行cygwin,在弹出的命令行窗口输入:cygcheck -c cygwin命令,会打印出当前cygwin的版本和运行状态,如果status是ok的话,则cygwin运行正常。

  然后依次输入gcc –v,g++  --version,make –version,gdb –version进行测试,(注意空格和-)如果都打印出版本信息和一些描述信息,非常高兴的告诉你,你的cygwin安装完成了!

  接下来为cygwin配置系统环境变量。

  我们找到Cygwin的安装路径,找到一个home\<你的用户名>\.bash_profile文件,在安装Cygwin后,在重新启动电脑之前,这个home目录是空的,重新启动电脑之后,home之下的文件夹才会成成。启动cygwin终端,用vi编辑.bash_profile文件(千万注意不要在windows中用记事本一类的阅读文件打开,不然会死的很惨的,当时没有注意,用记事本打开后,配置好环境发现无法输出所配置环境变量的相关信息)。在文件最后增加:

 

  export ANDROID_NDK=`cygpath -u "$ANDROID_NDK_ROOT"`

  export ANDROID_SDK=`cygpath -u "$ANDROID_HOME"`

  export JAVA_HOME=`cygpath -u "$JAVA_HOME"`

  export ANT_HOME=`cygpath –u "$ANT_HOME"`

      

  cygpath是将Windows的路径形式转化为unix风格的路径形式。注意这里`是反引号,不是单引号'。

  这里两个反引号包围起来的字符串,将作为命令来运行,执行的输出结果作为该反引号的内容,称为命令替换。 
双引号$后的字符串是windows中配置的系统环境变量。

  保存.bash_profile文件后再次重新启动Cygwin;在Cygwin中输入#cd $ANDDROID_NDK; 

      

  注意,cygwin中,环境变量中的值不能有空格。在本人环境中JAVA_HOME的环境变量值有空格,因此在#cd $JAVA_HOME出错,提示找不到目录,此时系统认为的目录是环境变量值中第一个空格之前的字符串。

  假设我们已经在之前已经创建好一个Android native项目JniDemo。

     此时可通过在cygwin来编译一个anrido native项目来检查环境是否OK.如图所示:

  第一次出现错误,是因为之前obj文件夹下不为空,删除obj,正常编译。

  接下来,就可在eclipse中创建cygwin环境下的builder,作为jni的编译环境。

  选中工程中的根目录JniDemo,点击鼠标右键,选Properties。弹出对话框,选中列表中的Builders。如图所示:

 

  点击对话框右端的new按钮,弹出“Choose configuration type”对话框,如图,选择Program,点击对话框下面的OK按钮。

 

现在我们打开了”Edit Configuration”对话框,在Name对应的文本框中输入名字JniBuilder(当然也可是你喜欢的其他名字).Main选项下,Location中输入cygwin系统中bash.exe的绝对路径。我这里是c:\cygwin\bin\bash.exec:\cygwin\为我的系统中cygwin的安装目录,这里要根据你的电脑中cygwin的安装目录来确定),Working Directory中输入c:\cygwin\bin\.Arguments中输入--login -c "cd /cygdrive/d/workspace/JniDemo && /cygdrive/d/develop-software/Android/android-ndk-r8d/ndk-build"。这里/cygdrive/d/workspace/JniDemo为工程根目录,/cygdrive/d/develop-software/Android/android-ndk-r8dNDK的安装目录。这两个目录参数根据你的工程目录和ndk的安装目录而定。注意的是驱动器要采用cygwin的方式。(比如:Windows系统下的D:对应/cygdrive/d,其余类推)。设置结果如图所示,然后点击 OK按钮即可。

 

创建好JniBuilder之后,为项目指定在编译时的这个builder.如图:

如果勾选上了JniBuilde,那么需要将NDK默认的CDT Builder不勾上,否则在使用JniBuilder会出现类似上面的错误:

至此,整个NDK环境就搭建成功。值得一提的是,在clean项目时,并不会把native编译生成的清掉。只是清掉java编译构建生成的东西。

posted on 2013-09-21 12:59  青山隐隐,绿水迢迢  阅读(1949)  评论(0编辑  收藏  举报