图文详解如何搭建Windows的Android C++开发环境
原地址:http://www.apkbus.com/android-18595-1-1.html
//=====================================================================
//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",如图:
<ignore_js_op>
在一系列的"下一步"之后,会到一个选择下载组件的对话框。为了避免以后会出现莫名奇妙的问题,我建议还是全部选择install,如图所示:
<ignore_js_op>
以install方式下载整个cygwin的话,大小大概在1.7G左右,所以注定这是一个比较漫长的过程。特别是不能采用我们平时的下载工具,并且服务器在国外,更加剧了耗时的长度。
4. 安装Cygwin
还是依然点击setup.exe这个程序,不过这次我们选择的是:"Install From Local Directory",如图:
<ignore_js_op>
接着选择安装的目录,我这里是"D:/ProgramFiles/Cygwin",如图所示:
<ignore_js_op>
再接下来呢,选择的就是你下载回来的Cygwin包的路径了,而我这里路径是"D:/Tools/cygwin",如图所示:
<ignore_js_op>
可能有朋友无法确定自己的安装路径,其实很简单,本地安装包路径就是setup.ini这个文件所在的文件夹。
紧接着的安装组件还是和之前一样,全部选择为install。点选下一步之后,就等着漫长的安装过程的结束吧,如下图所示:
<ignore_js_op>
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,画面显示:
<ignore_js_op>
这意味着,如果我将.bash_profile放到D:/ProgramFiles/Cygwin/home/Administrator 是没有任何作用的,而应该放到D:/WorkPlace !
那么,我们有没有办法更改这个目录呢?答案当然是可以,只要修改相应的环境变量即可。在"我的电脑"点击右键,然后按如下路径进行选择:属性 -> 高级 -> 环境变量。在上面或下面的框中,找到HOME这个环境变量,更改为相应的数值即可。更改之后,重启电脑,将.bash_profile拷贝到HOME变量指向的路径,启动cygwin,那么就可以生效了。这里需要注意,一定要重启电脑,否则这HOME变量之前的数值可能还会影响到cygwin。
更改HOME变量数值之后,输入pwd,很明显看出,路径已经改变,NDK_ROOT变量也起作用了,如图:<ignore_js_op>
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文件也会悉数在此,如下图所示:
<ignore_js_op>
启动配置好的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
图文详解如何搭建Windows的Android C++开发环境的更多相关文章
- 搭建Linux下Android程序开发环境
从AndroidStudio中文社区下载SDK压缩包,http://dl.google.com/android/android-sdk_r24.2-linux.tgz. 解压到某个目录,比如我的~/p ...
- Go语言学习笔记(一) : 搭建Windows下的Go开发环境
最近突然对Go语言产生了兴趣,主要是因为在使用python的时候遇到了一些不爽的问题,然后发现了Go.Go是Google出的一个动态语言,语法和C++接近,性能也非常的好,而且还支持编译成exe发布, ...
- 搭建windows下的odoo开发环境
odoo运行环境的必须要要求是 python环境 postgreSQL数据 数据库可以安装在别的机器上,比如服务器:当然对于开发环境,通常,数据库与代码调试安装在同一台机器上. 首先安装 postgr ...
- 搭建Windows下Java Web开发环境
概要 1.SSH开发相关软件及开发包下载2.软件安装及相关设置3.最简单的Web程序 1.软件下载 在D盘建一个目录JavaTools,用来存放下载的软件和开发包.(本教程将使用D盘,你也可以使用 ...
- Windows环境下执行hadoop命令出现Error: JAVA_HOME is incorrectly set Please update D:\SoftWare\hadoop-2.6.0\conf\hadoop-env.cmd错误的解决办法(图文详解)
不多说,直接上干货! 导读 win下安装hadoop 大家,别小看win下的安装大数据组件和使用 玩过dubbo和disconf的朋友们,都知道,在win下安装zookeeper是经常的事 ...
- 关于在真实物理机器上用cloudermanger或ambari搭建大数据集群注意事项总结、经验和感悟心得(图文详解)
写在前面的话 (1) 最近一段时间,因担任我团队实验室的大数据环境集群真实物理机器工作,至此,本人秉持负责.认真和细心的态度,先分别在虚拟机上模拟搭建ambari(基于CentOS6.5版本)和clo ...
- 基于CentOS6.5下snort+barnyard2+base的入侵检测系统的搭建(图文详解)(博主推荐)
为什么,要写这篇论文? 是因为,目前科研的我,正值研三,致力于网络安全.大数据.机器学习研究领域! 论文方向的需要,同时不局限于真实物理环境机器实验室的攻防环境.也不局限于真实物理机器环境实验室的大数 ...
- 基于CentOS6.5下Suricata(一款高性能的网络IDS、IPS和网络安全监控引擎)的搭建(图文详解)(博主推荐)
不多说,直接上干货! 为什么,要写这篇论文? 是因为,目前科研的我,正值研三,致力于网络安全.大数据.机器学习研究领域! 论文方向的需要,同时不局限于真实物理环境机器实验室的攻防环境.也不局限于真实物 ...
- 基于Windows7下snort+apache+php 7 + acid(或者base) + adodb + jpgraph的入侵检测系统的搭建(图文详解)(博主推荐)
为什么,要写这篇论文? 是因为,目前科研的我,正值研三,致力于网络安全.大数据.机器学习.人工智能.区域链研究领域! 论文方向的需要,同时不局限于真实物理环境机器实验室的攻防环境.也不局限于真实物理机 ...
随机推荐
- 基于Selenium2+Java的UI自动化(3) - 页面元素定位
一.几种网页定位方式 webdriver的页面定位很灵活,提供了8种定位方式: 其中,常见的有三种:id .cssSelector .xpath: 一个元素如果存在 id 属性,则这个 id 的值,在 ...
- java算法小知识练习
偶尔翻开了以前的练习题,不自觉又想随手敲一遍,虽然有些思想依然是那么老套,但毕竟也算是对知识的巩固 了. 一.题目:有1.2.3.4四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 具体 ...
- 使用blktrace排查iowait cpu高的问题
本文转自这里,blktrace在这种情况下的使用方法值得借鉴学习. ------------------------------------------------------------------ ...
- 本地缓存下载文件,download的二次封装
来源:http://ask.dcloud.net.cn/article/524 源码下载链接 说明: (1)由于平时项目中大量用到了附件下载等功能,所以就花了一个时间,把plus的downlaod进行 ...
- 在Ubuntu Linux下安装Code::Blocks和Eclipse CDT
最近小白由于有工作学习的需要,要尝试在Linux下进行C++编程.所以特地花了一点时间研究一下Linux下的C++的IDE.最后我尝试了使用Code::Blocks和Eclipse两个著 ...
- 【JAVA】浅谈java枚举类
一.什么情况下使用枚举类? 有的时候一个类的对象是有限且固定的,这种情况下我们使用枚举类就比较方便? 二.为什么不用静态常量来替代枚举类呢? public static final int SEASO ...
- [翻译][MVC 5 + EF 6] 11:实现继承
原文:Implementing Inheritance with the Entity Framework 6 in an ASP.NET MVC 5 Application 1.选择继承映射到数据库 ...
- 最近用到的Linux常用命令总结
最近用到的Linux常用命令总结 - ls :显示当前目录文件信息 `ls -a -l` - cd :目录跳转 cd .. 上级目录 cd ~ home目录 cd - 最近目录 - cat :在屏幕上 ...
- CSS选择器,标签限定
例子:ul#nav, ul li#nav和 #nav ul, #nav ul li 注意空格,没有空间隔开的就可以理解为限定 区别 1.ul#nav:表示id='nav'的ul:(ul限定#nav标签 ...
- Apose 套打
给web添加一个dll引用:Apose.Words 下载链接:http://yunpan.cn/cA7v6uceM6KVw 提取码 11df 在Global.asax里面的Application_S ...