基于 Android NDK 的学习之旅-----环境搭建
工欲善其事 必先利其器 , 以下介绍下 Eclipse SDK NDK Cygwin CDT 集成开发环境的搭建。
1、Android 开发环境搭建
Android开发环境搭建不是重点,相信看此文章的非常多人都已经搭建成功,这里随便概述性的说说。
1) 下载 JDK
2) 下载 Eclipse
3) 下载 Android SDK
4) 启动Eclipse , 安装 ADT
2、下载安装Android NDK
NDK下载戳这里: https://dl.google.com/android/ndk/android-ndk-r9d-windows-x86.zip
3、下载安装cygwin
因为NDK编译代码时必需要用到make和gcc,所以你必须先搭建一个linux环境。 cygwin是一个在windows平台上执行的unix模拟环境,它对于学习unix/linux操作环境,或者从unix到windows的应用程序移植,很实用。
通过它,你就能够在不安装linux的情况下使用NDK来编译C、C++代码了。以下我们一步一步的安装cygwin吧。
(安装的时候忘记截图了)
首先。你得先跑到http://www.cygwin.com下载setup.exe
1、 然后双击执行吧,执行后你将看到安装向导界面:
2、 点击下一步
此时让你选择安装方式:
1)Install from Internet:直接从Internet上下载并马上安装(安装完毕后,下载好的安装文件并不会被 删除。而是仍然被保留。以便下次再安装)。
2)Download Without Installing:仅仅是将安装文件下载到本地。但临时不安装。
3)Install from Local Directory:不下载安装文件,直接从本地某个含有安装文件的文件夹进行安装。
3、选择第一项,然后点击下一步:
4、选择要安装的文件夹,注意,最好不要放到有中文和空格的文件夹里,似乎会造成安装出问题,其他选项不用变。 之后点下一步:
5、上一步是选择安装cygwin的文件夹,这个是选择你下载的安装包所在的文件夹,默认是你执行setup.exe的目 录。直接点下一步就能够:
6、此时你共同拥有三种连接方式选择:
1) Direct Connection:直接连接。
2) Use IE5 Settings:使用IE的连接參数设置进行连接。
3) Use HTTP/FTP Proxy:使用HTTP或FTP代理server进行连接(须要输入server地址、port号)。
用户可依据自己的网络连接的实情情况进行选择,一般正常情况下,均选择第一种,也就是直接连接方式。然后 再点击“下一步”,
7、 这是选择要下载的网站,我用的是http://mirrors.kernel.org,速度感觉还挺快。选择后点下一步
8、 此时会下载载入安装包列表
9、Search是可以输入你要下载的包的名称。可以高速筛选出你要下载的包。
那四个单选button是选择下边树的样式,默认即可,不用动。View默认是Category,建议改成full显示所有包再查,省的一些包被隐藏掉。左下角那个复选框是是否隐藏过期包。默认打钩。不用管它即可。下边開始下载我们要安装的包吧。为了避免所有下载,这里列出了后面开发NDK用得着的包:autoconf2.1、automake1.10、binutils、gcc-core、gcc- g++、gcc4-core、gcc4-g++、gdb、pcre、pcre-devel、gawk、make共12个包
10、 然后開始选择安装这些包吧。点skip。把它变成数字版本号格式,要确保Bin项变成叉号,而Src项是源代码,这个就不是必需选了。
11、 以下測试一下cygwin是不是已经安装好了。
执行cygwin,在弹出的命令行窗体输入:cygcheck -c cygwin命令,会打印出当前cygwin的版本号和执行状 态,假设status是ok的话。则cygwin执行正常。
然后依次输入gcc –version,g++ --version,make –version,gdb –version进行測试(或,输入make -v 和 gcc -v ),假设都打印出版本号信息和一些描写叙述信息,很高兴的告诉你,你的cygwin安装完毕了!
4、配置NDK环境变量
1、 首先找到cygwin的安装目录,找到一个home<你的username>.bash_profile文件,我的是:E:cygwinhomeAdministrator.bash_profile,(注意:我安装的时候我的home目录以下神马都没有。解决的办法:首先打开环境变量。把里面的用户变量中的HOME变量删掉,在E:cygwinhome目录下建立名为Administrator的目录(是username),然后把E:cygwinetcskel.bash_profile复制到该目录下)。
2、 打开bash_profile文件。加入NDK=/cygdrive/<你的盘符>/<android ndk 文件夹> 比如:NDK=/cygdrive/e/android-ndk-r5
export NDK
NDK这个名字是随便取的,为了方面以后使用方便。选个简短的名字,然后保存
3、打开cygwin。输入cd $NDK,假设输出上面配置的/cygdrive/e/android-ndk-r5信息,则表明设置环境变量成功了。
5、用NDK来编译程序
1、 如今我们用安装好的NDK来编译一个简单的程序吧,我们选择ndk自带的样例hello-jni,我的位于E:android-ndk-r5sampleshello-jni(依据你详细的安装位置而定),
2、 执行cygwin。输入命令cd /cygdrive/e/android-ndk-r5/samples/hello-jni,进入到E:android-ndk-r5sampleshello-jni文件夹。
3、 输入$NDK/ndk-build,运行成功后,它会自己主动生成一个libs文件夹,把编译生成的.so文件放在里面。
($NDK是调用我们之前配置好的环境变量,ndk-build是调用ndk的编译程序)
4、 此时去hello-jni的libs文件夹下看有没有生成的.so文件,假设有。你的ndk就执行正常啦!
6、在eclipse中集成c/c++开发环境
1、 装Eclipse的C/C++环境插件:CDT,这里选择在线安装。
首先登录http://www.eclipse.org/cdt/downloads.php,找到相应你Eclipse版本号的CDT插件的在线安装地址。
2、 然后点Help菜单,找到Install New Software菜单
3、 点击Addbutton。把取的地址填进去。出来插件列表后,选Select All。然后选择下一步就可以完毕安装
4、 安装完毕后,在eclispe中右击新建一个项目。假设出现了c/c++项目,则表明你的CDT插件成功安装啦。
7、配置C/C++的编译器
1、 打开eclipse,导入ndk自带的hello-jni样例,右键单击项目名称,点击Properties,弹出配置界面,之后再点击Builders,弹出项目的编译工具列表。之后点击New,新加入一个编译器。点击后出现加入界面。选择Program,点 击OK
2、出现了加入界面。首先给编译配置起个名字。如:C_Builder
设置Location为<你cygwin安装路径>inash.exe程序,比如:E:cygwininash.exe。设置Working Directory为<你cygwin安装路径>in文件夹,比如:E:cygwinin
设置Arguments为
--login -c "cd /cygdrive/I/JavaWorkSpace/Blog/NDK_02 && $NDK/ndk-build"
上面的配置中 /cygdrive/I/JavaWorkSpace/Blog/NDK_02是你当前要编译的程序的文件夹,$NDK是之前配置 的ndk的环境变量,这两个依据你详细的安装文件夹进行配置,其它的不用变,Arguments这串參数实际是 给bash.exe命令行程序传參数。进入要编译的程序文件夹,然后执行ndk-build编译程序
3、接着切换到Refresh选项卡,给Refresh resources upon completion打上钩
4、然后切换到Build Options选项卡,勾选上最后三项
5、之后点击Specify Resourcesbutton,选择资源文件夹。勾选你的项目文件夹就可以
6、 最后点击Finish,点击OK一路把刚才的配置都保存下来,注意:假设你配置的编译器在其他编译器下边。记得一定要点Upbutton,把它排到第一位。否则C代码的编译晚于Java代码的编译。会造成你的C代码要编译两次才干看到最新的改动
7、 这一路下来肯定非常累了吧,如今再次恭喜你。编译配置也配置完毕啦,如今来測试一下能否够自己主动编译呢,打开项目jni文件夹里的hello-jni.c文件把提示Hello from JNI!改成其它的文字:如:Hello。My name is alex.,然后再模拟器中执行你的程序。假设模拟器中显示了你最新改动的文字。那么Congratulations!
你已经所有配置成功啦!
文章參考 http://yueguc.iteye.com/blog/946724