一、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的更多相关文章

  1. windows下安装cygwin及配置(转)

    reference:https://cygwin.com/install.html 对比:MinGW vs. CygWin    https://www.cnblogs.com/findumars/p ...

  2. Windows下安装Cygwin及包管理器apt-cyg(转)

    本文为转载文章: http://www.2cto.com/os/201212/176551.html Cygwin可以在Windows下使用unix环境Bash和各种功能强大的工具,对于Linux管理 ...

  3. 入门-windows下安装ETH挖矿

    对刚入门的区块链开发者来说,刚开始可以在windows本地搭建私有链,便于操作,毕竟,要想真正挖到币还是有难度的,下面以ETH为例,在windows环境下安装并实现挖矿. 步骤一.安装geth环境.下 ...

  4. Windows下安装Cygwin

    1.去官网下载Cygwin http://www.cygwin.com/ 注意32位和64位的选择,完了直接点击exe文件开始安装. 2.安装 (1)“下一步”: (2)“Install form I ...

  5. Vim入门——Windows下安装

    下载页面:https://www.vim.org/download.php Windows选用的是MS-Windows: 下图为展示: 因为最近被墙,镜像貌似没中国内陆地区,因此,选择使用GitHub ...

  6. 在windows下用cygwin和eclipse搭建cocos2dx的android开发环境

    在windows下用cygwin和eclipse搭建cocos2dx(2.1.4)的android开发环境,2013-8-1更新. 一.准备工作 需要下载和安装以下内容,请根据自己的操作系统选择x86 ...

  7. ElasticSearch入门 第一篇:Windows下安装ElasticSearch

    这是ElasticSearch 2.4 版本系列的第一篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...

  8. ElasticSearch入门 :Windows下安装ElasticSearch

    这是ElasticSearch 2.4 版本系列的第一篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...

  9. Windows 平台下安装Cygwin后,sshd服务无法启动

    Windows 平台下安装Cygwin后,sshd服务无法启动 系统日志记录信息: 事件 ID ( 0 )的描述(在资源( sshd )中)无法找到.本地计算机可能没有必要的注册信息或消息 DLL 文 ...

随机推荐

  1. 使用Timer和ScheduledThreadPoolExecutor执行定时任务

    Java使用Timer和ScheduledThreadPoolExecutor执行定时任务 定时任务是在指定时间执行程序,或周期性执行计划任务.Java中实现定时任务的方法有很多,主要JDK自带的一些 ...

  2. Android ANR分析(2)

    转自:http://blog.csdn.net/ruingman/article/details/53118202   定义 主线程在特定的时间内没有做完特定的事情 常见的场景 A.input事件超过 ...

  3. 新手上路之Hibernate:第一个Hibernate例子

    一.Hibernate概述 (一)什么是Hibernate? Hibernate核心内容是ORM(关系对象模型).可以将对象自动的生成数据库中的信息,使得开发更加的面向对象.这样作为程序员就可以使用面 ...

  4. 1-01Sql Sever 2008的安装

    Sql Sever 2008对计算机的配置要求: 1:处理器:最低1.4Ghz的处理器,建议使用2.0GHz或更高的处理器  . 2:内存:最小512MB, 建议使用1GB或更高的处理器. 3:磁盘容 ...

  5. 提升 LaTeX 效率的小工具:Detexify LaTeX handwritten symbol recognition

    Detexify LaTeX handwritten symbol recognition 用 LaTeX 的人找符号的表示方法通常很费事,需要去翻长长的列表.Detexify 是一个省事的小网站,只 ...

  6. 高质量C++[转]

    高质量C++/C编程指南 文件状态 [  ] 草稿文件 [√] 正式文件 [  ] 更改正式文件 文件标识: 当前版本: 1.0 作    者: 林锐 博士 完成日期: 2001年7月24日 版 本  ...

  7. Linux学习笔记(18) Shell编程之流程控制

    1. if语句 (1) 单分支if条件语句 格式为: # 注意条件判断式两端的空格if [ 条件判断式 ];then 程序员 fi 或者 if[ 条件判断式 ] then 程序 fi 例:判断分区使用 ...

  8. LoadRunner检查点学习实例

    LoadRunner只会检测脚本中事务的执行状态,而实际的事务执行结果则需要通过检查点来完成. 例如一个登录事务,LR只关心事务本身的执行状态,也就是说哪怕实际操作密码错误产生登录失败的业务操作,其事 ...

  9. Java利用POI导入导出Excel中的数据

         首先谈一下今天发生的一件开心的事,本着一颗android的心我被分配到了PB组,身在曹营心在汉啊!好吧,今天要记录和分享的是Java利用POI导入导出Excel中的数据.下面POI包的下载地 ...

  10. STL中容器的push()或者push_back()函数的一点说明

    在STL的queue 或者 vector.list等容器适配器或者容器中,会经常用到的函数就是push()或者push_back()函数,但是有一点需要明确的是: 在使用这些函数对容器/适配器对象增加 ...