android NDK入门 windows下安装cygwin
一、Android NDK环境简介
Android NDK 是运行于Android 平台上的Native Development Kit 的缩写。
Android 应用开发者可以通过NDK 调用C 或C++ 本地代码。
更多介绍参见:http://developer.android.com/sdk/ndk/1.5_r1/index.html
二 、搭建Android NDK环境
安装cygwin
要在Windows 平台上进行NDK的开发,需要安装cygwin(一个在windows平台上模拟linux的软件),NDK 编译需要用到Cygwin 中的make 和gcc, 所以先来下载并安装Cygwin 关于cygwin 安装比较复杂,其下载地址:http://www.cygwin.com/
安装步骤:
1.选择安装方式:
1)Install from Internet:直接从Internet上下载并立即安装(安装完成后,下载好的安装文件并不会被删除,而是仍然被保留,以便下次再安装)。
2)Download Without Installing:只是将安装文件下载到本地,但暂时不安装。
3)Install from Local Directory:不下载安装文件,直接从本地某个含有安装文件的目录进行安装。
2、选择第一项,然后点击下一步:
3、选择要安装的目录,注意,最好不要放到有中文和空格的目录里,似乎会造成安装出问题,其它选项不用变,之后点下一步:
4、上一步是选择安装cygwin的目录,这个是选择你下载的安装包所在的目录,默认是你运行setup.exe的目 录,直接点下一步就可以:
5、此时你共有三种连接方式选择:
1) Direct Connection:直接连接。
2) Use IE5 Settings:使用IE的连接参数设置进行连接。
3) Use HTTP/FTP Proxy:使用HTTP或FTP代理服务器进行连接(需要输入服务器地址、端口号)。
用户可根据自己的网络连接的实情情况进行选择,一般正常情况下,均选择第一种,也就是直接连接方式。然后再点击“下一步”,
6、 这是选择要下载的站点,在提供的下载站点中选择一个,选择后点下一步
7、 此时会下载加载安装包列表
8、Search是可以输入你要下载的包的名称,能够快速筛选出你要下载的包。那四个单选按钮是选择下边树的样式,默认就行,不用动。View默认是Category,建议改成full显示全部包再查,省的一些包被隐藏掉。左下角那个复选框是是否隐藏过期包,默认打钩,不用管它就行,下边开始下载我们要安装的包吧,为了避免全部下载,这里列出了后面开发NDK用得着的包:autoconf2.1、automake1.10、binutils、gcc-core、gcc- g++、gcc4-core、gcc4-g++、gdb、pcre、pcre-devel、gawk、make共12个包
9、 然后开始选择安装这些包吧,点skip,把它变成数字版本格式,要确保Bin项变成叉号,而Src项是源码,这个 就没必要选了。
10、 下面测试一下cygwin是不是已经安装好了。
运行cygwin,在弹出的命令行窗口输入:cygcheck -c cygwin命令,会打印出当前cygwin的版本和运行状 态,如果status是ok的话,则cygwin运行正常。
然后依次输入gcc –version,g++ --version,make –version,gdb –version进行测试,如果都打印出版本信息和一些描述信息,非常高兴的告诉你,你的cygwin安装完成了!
安装 Android NDK
可到Android官网下载:http://developer.android.com/sdk/ndk/index.html
注意选择相应的版本下载,下载后将其解压就可以了。
配置cygwin,用UtriaEdit打开cygwin安装目录下的home/<你的用户名>/.bach-profile文件,在后面加上
NDK=/cygdrive/<NDK安装路径>
export NDK
两行,也可以在windows 下添加 环境变量 $NDK=<NDK安装路径>。
注意:这里如果是中文OS 使用记事本或者写字板打开编辑后,重新启动Cygwin 会报错(编码不同)。
(这部有可能不成功 需要用一个dos2unix.exe把bash_profile这个文件转下编码,具体下载地址大家自己找找) 我直接用的 notepad++ 修改的没有问题。
至此,我们就可以用安装好的NDK来编译一个简单的程序吧,我们选择ndk自带的例子hello-jni,我的位于d/android-ndk-r7c/samples/hello-jni (根据你具体的安装位置而定),
运行cygwin,输入命令cd /cygdrive/d/android-ndk-r7c/samples/hello-jni,进入到d/android-ndk-r7c/samples/hello-jni目录。
输入$NDK/ndk-build,执行成功后,它会自动生成一个libs目录,把编译生成的.so文件放在里面。($NDK是调用我们之前配置好的环境变量,ndk-build是调用ndk的编译程序)
如图:
现在我们终于可以用NDK来编译完成 jni 例子了 。 以上的需要命令来编译,下就用Eclipse CDT 插件来完成
安装CDT插件
CDT是一个使Eclipse支持C/C++的插件。这是下载地址:http://www.eclipse.org/cdt/downloads.php
可以通过在Eclipse 中 help > Install New Software 中安装, 现在,进入Help – Install New Software菜单项,增加一项:CDT - http://download.eclipse.org/tools/cdt/releases/helios, 等待更新项目树加载,然后选中Programming Languages分支下的Eclipse C/C++ Development Tools,然后点击Next按钮。按照后续的提示,接受缺省的选项,最后必须接受许可,以便让Eclipse完成更新。完成后,你将会看到要求重启Eclipse的提示,点击Yes按钮,等待Eclipse重启。现在你的Eclipse就支持C/C++了。
也可以下载插件到本地 ,从本地安装插件。(网络有时候比较。。。)
注意,下载对应 Eclipse 版本的插件 附正版本图
配置C/C++的编译器
1、 打开eclipse,导入ndk自带的hello-jni例子,右键单击项目名称,点击Properties,弹出配置界面,之后再点击Builders,弹出项目的编译工具列表,之后点击New,新添加一个编译器,点击后出现添加界面,选择Program,点 击OK
2、出现了添加界面,首先给编译配置起个名字,如:C_Builder
设置Location为<你cygwin安装路径>\bin\bash.exe程序,例如:E:\cygwin\bin\bash.exe,设置Working Directory为<你cygwin安装路径>\bin目录,例如:E:\cygwin\bin
设置Arguments为
--login -c "cd /cygdrive/d/android-ndk-r7c/samples/hello-jni && $NDK/ndk-build"
上面的配置中 d/android-ndk-r7c/samples/hello-jni 是你当前要编译的程序的目录,$NDK是之前配置 的ndk的环境变量,这两个根据你具体的安装目录进行配置,其他的不用变,Arguments这串参数实际是 给bash.exe命令行程序传参数,进入要编译的程序目录,然后运行ndk-build编译程序
3、接着切换到Refresh选项卡,给Refresh resources upon completion打上钩
4、然后切换到Build Options选项卡,勾选上最后三项
5、之后点击Specify Resources按钮,选择资源目录,勾选你的项目目录即可
6、 最后点击Finish,点击OK一路把刚才的配置都保存下来,注意:如果你配置的编译器在其它编译器下边,记得一定要点Up按钮,把它排到第一位,否则C代码的编译晚于Java代码的编译,会造成你的C代码要编译两次才能看到最新的修改
7、 编译配置也配置完成啦,现在来测试一下是否可以自动编译呢,当你点击 ok 完成之后 其实在console 就可以看到 自动编译信息
如图:
打开项目jni目录里的hello-jni.c文件把提示Hello from JNI!改成其他的文字:如:Hello,My name is 。。。。,然后再模拟器中运行你的程序,模拟器中应该就显示了你最新修改的文字! 如果以上的步骤都没错的话。
请参考 http://blog.csdn.net/janronehoo/article/details/7497040
android NDK入门 windows下安装cygwin的更多相关文章
- windows下安装cygwin及配置(转)
reference:https://cygwin.com/install.html 对比:MinGW vs. CygWin https://www.cnblogs.com/findumars/p ...
- Windows下安装Cygwin及包管理器apt-cyg(转)
本文为转载文章: http://www.2cto.com/os/201212/176551.html Cygwin可以在Windows下使用unix环境Bash和各种功能强大的工具,对于Linux管理 ...
- 入门-windows下安装ETH挖矿
对刚入门的区块链开发者来说,刚开始可以在windows本地搭建私有链,便于操作,毕竟,要想真正挖到币还是有难度的,下面以ETH为例,在windows环境下安装并实现挖矿. 步骤一.安装geth环境.下 ...
- Windows下安装Cygwin
1.去官网下载Cygwin http://www.cygwin.com/ 注意32位和64位的选择,完了直接点击exe文件开始安装. 2.安装 (1)“下一步”: (2)“Install form I ...
- Vim入门——Windows下安装
下载页面:https://www.vim.org/download.php Windows选用的是MS-Windows: 下图为展示: 因为最近被墙,镜像貌似没中国内陆地区,因此,选择使用GitHub ...
- 在windows下用cygwin和eclipse搭建cocos2dx的android开发环境
在windows下用cygwin和eclipse搭建cocos2dx(2.1.4)的android开发环境,2013-8-1更新. 一.准备工作 需要下载和安装以下内容,请根据自己的操作系统选择x86 ...
- ElasticSearch入门 第一篇:Windows下安装ElasticSearch
这是ElasticSearch 2.4 版本系列的第一篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...
- ElasticSearch入门 :Windows下安装ElasticSearch
这是ElasticSearch 2.4 版本系列的第一篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...
- Windows 平台下安装Cygwin后,sshd服务无法启动
Windows 平台下安装Cygwin后,sshd服务无法启动 系统日志记录信息: 事件 ID ( 0 )的描述(在资源( sshd )中)无法找到.本地计算机可能没有必要的注册信息或消息 DLL 文 ...
随机推荐
- 数据结构和算法 – 8.链表
8.1.数组存在的问题 在处理列表的时候数组是常用的数据结构.数组可以对所存储的数据项提供快速地存取访问,而且它很易于进行循环遍历操作.当然,数组已经是语言的一部分了,用户不需要使用额外的内存,也不需 ...
- HTML5 – 3.加强版ol
<ol> 标签定义了一个有序列表. 列表排序以数字来显示. 使用<li> 标签来定义列表选项. 提示和注释 提示: 如果需要无序列表,请使用 <ul> 标签. 提示 ...
- 重温WCF之WCF传输安全(十三)(4)基于SSL的WCF对客户端采用证书验证(转)
转载地址:http://www.cnblogs.com/lxblog/archive/2012/09/20/2695397.html 前一篇我们演示了基于SSL的WCF 对客户端进行用户名和密码方式的 ...
- 【ubuntu 】常见错误--Could not get lock /var/lib/dpkg/lock
ubuntu 常见错误--Could not get lock /var/lib/dpkg/lock 通过终端安装程序sudo apt-get install xxx时出错: E: Could not ...
- POJ3321 Apple Tree(树状数组)
先做一次dfs求得每个节点为根的子树在树状数组中编号的起始值和结束值,再树状数组做区间查询 与单点更新. #include<cstdio> #include<iostream> ...
- .NET NLog 详解(四) - filter
我们将版本向前切换到20051025,这期的关注点是filter.我们在使用日志的时候可能希望加上一些过滤器,在满足某些特定条件的时候才输出.举个简单的使用方式如下: <nlog> < ...
- wp8 入门到精通 测量代码执行时间
Stopwatch time = new Stopwatch(); byte[] target = new byte[size]; for (int j = 0; j < size; j++) ...
- 在Salesforce中通过 Debug Log 方式 跟踪逻辑流程
在Salesforce中通过 Debug Log方式 跟踪逻辑流程 具体位置如下所示: Setup ---> Logs ---> Debug Logs ---> Monitored ...
- 批量删除SharePoint 2010的List中的item
第一种方式:循环遍历List中的所有item,然后根据条件去判断当前item是否应该被删除[注:要用 i-- 方式去遍历,这也是删除集合里面item的常用做法,如果用 i++ 的方式去遍历删除,会出错 ...
- SoapUI接口测试之实战运用操作(五)
SoapUI接口测试之实战运用操作(五)