转自:http://blog.csdn.net/yanzi1225627/article/details/16897877

Android开发环境由windows下ADT Bundle搭建,且按前文http://blog.csdn.net/yanzi1225627/article/details/16876311 所示,安好cygwin和CDT,能够运行c或c++的helloworld。NDK我用的android-ndk-r7-windows。

第一种配置方法

参考http://blog.csdn.net/xinzheng_wang/article/details/7416543文中所说,android-ndk-r7-windows往上的版本都集成了cygwin,因此无需再安cygwin。所谓的集成了cygwin就是说,安装包解压后有个ndk-build.cmd命令。配置eclipse直接调这个cmd命令,完成编译。而安装cygwin的话,就是要像在linux下一样,cd到工程文件夹,然后输入ndk-build,完成编译。个人还是倾向于安装cygwin,因为不安的话,没法在eclipse上编译运行调试C/C++程序。年龄大了,不想折腾了。既然eclipse提供了编译C/C++的环境,那就一切在这上面搞吧。

(1)解压缩android-ndk-r7-windows(77.5M),将ndk-build.cmd的路径设置到系统环境变量path里。

(2)接下来是比较关键的。导入ndk解压包里的hello-jni至eclipse,然后右键项目选择属性或直接按快捷键Alter+Enter,点开Builders--new---Program,Name是自己随便起的,这里叫NDK_Builder,下面的Location通过BrowseFileSystem选中ndk-build.cmd就可以了。Working Directory通过BrowseWorkspace选择当前工程就ok。Refresh选项如何想对整个工作空间起 作用就选第一个,如果只对当前项目起作用就选第三个。在Build Options里选上After a “Clean”、During manual builds 、During auto builds及最下面的specify working set of relevant resource,选择当前工程里的jni文件夹,即ndk编译时的源代码和mk文件所在目录。

编译运行时报错:

/usr/bin/sh: -c: line 1: syntax error: unexpected end of file
make: *** [libs/armeabi/gdbserver] Error 1

这是cygwin的环境变量在Path里放在ndk的后面导致的。http://blog.csdn.net/xinzheng_wang/article/details/7416543此文中的说法有误。 将cygwin的环境变量放在ndk的前面,编译时通过了,app打开时一开就挂。原因是libs文件夹根本就没生成。不得已,在path里讲cygwin的环境变量删除,然后重启eclipse,否则环境变量设置无效。再次运行时可以看到libs正常生成,app运行通过。

      注意:这种方式无需手动输入ndk-build,直接clean后自动编译jni文件夹。系统环境变量Path里不能设置cygwin!

第二种方式:

即不用在eclipse新加一个Builder,不调用ndk-build.cmd,直接在cygwin下手动进到工程目录,然后输入ndk-build。如果提示obj/local/.....***多个目标匹配,停止。

需在工程里将obj文件夹下的东西删除即可。

首先进到cygwin下输入ndk-build命令试下,如果说这个命令未被识别就需要在cygwin里设置下。vi  /etc/profile 然后输入i表这示可以插入,注意在cygwin里,按enter表示下移,而不是光标的下键,可能是笔记本键盘的问题。然后在文件的末尾加上  export NDK=/cygdrive/d/ProgramFile/android-ndk-r7/  注意这里/cygdrive/d/就是表示的d盘,window下是用 \ 而linux下是用 /  真蛋疼。然后按esc键,再按:输入wq,保存后再输入命令:source /etc/profile使刚才的设置生效。完毕后,输入ndk-build命令测试一把,如果能识别ndk-build就说明环境配置好了。如下:

Administrator@yanzi /
$ ndk-build
Android NDK: Could not find application project directory !
Android NDK: Please define the NDK_PROJECT_PATH variable to point to it.
/cygdrive/d/ProgramFile/android-ndk-r7/build/core/build-local.mk:102: *** Android NDK: Aborting    。 停止。

奇怪的是我安装的Cygwin2.774版本,ndk的环境变量只在Path里设置了下,在cygwin里直接就可以识别ndk-build命令了!编译jni成功时显示:

总结:如果只看NDK编译的话,这两种方式是可以共存的。但是考虑到用eclipse来编译C/C++文件,则必须在Path里设置cygwin的bin目录,因此跟第一种使用NDK的方式就冲突了。因此,我推荐使用第二种借助cygwin来使用ndk-build的方式。至此,CDT、NDK、Cygwin搭建方式就完毕了。总结下需要设置以下项:

1、系统环境变量Path添加: D:\ProgramFile\cgwin\bin;D:\ProgramFile\android-ndk-r7;

2、eclipse里添加:

C_INCLUDE_PATH D:\ProgramFile\cgwin\lib\gcc\i686-pc-cygwin\4.7.3\include

CPLUS_INCLUDE_PATH:D:\ProgramFile\cgwin\lib\gcc\i686-pc-cygwin\4.7.3\include\c++;D:\ProgramFile\cgwin\lib\gcc\i686-pc-cygwin\4.7.3\include\c++\backward;D:\ProgramFile\cgwin\lib\gcc\i686-pc-cygwin\4.7.3\include

3,如果cygwin进去后找不到ndk-build,需要在/etc/profile里设置NDK环境变量,之后source以下。

4,系统环境变量里的胚胎选项:LIBRARY_PATH   D:\ProgramFile\cgwin\lib  这一项我没设,调试C C++程序时暂未发现任何异常。

Windos下Android(ADT Bundle)配置NDK的两种方法------ADT、Cygwin、NDK配置汇总(转)的更多相关文章

  1. Android Studio导入Eclipse项目的两种方法

    Android Studio导入Eclipse项目有两种方法,一种是直接把Eclipse项目导入Android Studio,另一种是在Eclipse项目里面进行转换,然后再导入Android Stu ...

  2. 最新阿里云服务器免费SSL证书配置HTTPS的两种方法(图文教程二)

    在大家学习如何利用免费SSL证书配置网站HTTPS之前,我们先要搞清楚为什么要开启HTTPS,这个绿色的小锁真的有用吗?所谓的HTTPS其实是(安全套接字层超文本传输协议)是以安全为目标的HTTP通道 ...

  3. Android中用GridView实现九宫格的两种方法(转)

    Android中用GridView实现九宫格的两种方法http://blog.csdn.net/shakespeare001/article/details/7768455 1.传统办法:实现一个继承 ...

  4. 修改android的wifi客户端名称的两种方法

    修改android的wifi客户端名称的两种方法     手机连接到无线路由时,在dhcp的客户端列表里面是这样的名称"android-89425253e5de3a2",这就是安卓 ...

  5. Android中Intent传递对象的两种方法(Serializable,Parcelable)

    今天要给大家讲一下Android中 Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是 Bundle.putP ...

  6. Android:实现无标题的两种方法

    实现无标题的两种方法:配置xml文件和编写代码设置 1.在AndroidManifest.xml文件中进行配置 实现全屏效果: android:theme="@android:style/T ...

  7. [转]Android中Intent传递对象的两种方法(Serializable,Parcelable)

    http://blog.csdn.net/xyz_lmn/article/details/5908355 今天要给大家讲一下Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种 ...

  8. Android高手进阶教程(十七)之---Android中Intent传递对象的两种方法(Serializable,Parcelable)!

    [转][原文] 大家好,好久不见,今天要给大家讲一下Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object); ...

  9. 查找linux系统下的端口被占用进程的两种方法 【转】

    在linux下开发时,你的软件可能要使用某一个端口,或者想查找某一个端口是否被占用.需要怎么做呢??这的确是一个比较烦恼的问题,我也此为这个苦恼过.但是通过查找man手册,还是同事的交流.总结出来两种 ...

随机推荐

  1. 转 Monitoring Restore/Recovery Progress

    ora-279 是可以忽略的报错 In general, a restore should take approximately the same time as a backup, if not l ...

  2. selenium 安装与环境配置

    selenium的安装 环境配置:python2.7+selenium2+Firefox46以下版本 本次安装环境:python2.7.13+selenium2.53.6+Firefox46 官网下载 ...

  3. Python+Selenium之HTMLTestRunner

    下载 HTMLTestRunner 模块 下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html 保存路径:将下载的HTMLTestRunne ...

  4. white-space中 pre pre-line pre-wrap的区别

    css3为white-space新增了2个非常高冷的值:pre-line与pre-wrap. 现在我们来看一下它们与pre之间的区别呢? pre:会保留空格,但我想它与pre-line/pre-wra ...

  5. MAYA 卸载工具,完美彻底清除干净maya各种残留注册表和文件

    是不是遇到MAYA/CAD/3DSMAX/INVENTOR安装失败?AUTODESK系列软件着实令人头疼,MAYA/CAD/3DSMAX/INVENTOR安装失败之后不能完全卸载!!!(比如maya, ...

  6. bootstrap的datepicker使用(1.将默认的英文设置为中文2.选择日月年的时候记录之前的操作)

    参考网页    bootstrap datepicker 属性设置 以及方法和事件 1.如何将bootstrap的datepicker默认的英文设置为中文 第一步,新建一个js文件(bootstrap ...

  7. PlayMaker入门介绍

    http://www.jianshu.com/p/ce791bef66bb   PlayMaker是什么? PlayMaker是Unity3D的一款 可视化 的 有限元状态机(Finite-state ...

  8. MATLAB-R2015b-win64安装详细教程

    1.首先下载以下文件 链接:https://pan.baidu.com/s/1eRAOKZw 密码:5nkj 2.双击R2015b_win64.iso打开(win8,win8.1,win10均可直接打 ...

  9. 九度oj题目1518:反转链表

    题目1518:反转链表 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:2567 解决:948 题目描述: 输入一个链表,反转链表后,输出链表的所有元素.(hint : 请务必使用链表) ...

  10. 给string添加新的函数

    var str = "abcdefg";String.prototype.constr = function(){ return this.split('').join('-'); ...