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.exe(c:\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-r8d为NDK的安装目录。这两个目录参数根据你的工程目录和ndk的安装目录而定。注意的是驱动器要采用cygwin的方式。(比如:Windows系统下的D:对应/cygdrive/d,其余类推)。设置结果如图所示,然后点击 OK按钮即可。
创建好JniBuilder之后,为项目指定在编译时的这个builder.如图:
如果勾选上了JniBuilde,那么需要将NDK默认的CDT Builder不勾上,否则在使用JniBuilder会出现类似上面的错误:
至此,整个NDK环境就搭建成功。值得一提的是,在clean项目时,并不会把native编译生成的清掉。只是清掉java编译构建生成的东西。