Windos下Android(ADT Bundle)配置NDK的两种方法------ADT、Cygwin、NDK配置汇总(转)
转自: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配置汇总(转)的更多相关文章
- Android Studio导入Eclipse项目的两种方法
Android Studio导入Eclipse项目有两种方法,一种是直接把Eclipse项目导入Android Studio,另一种是在Eclipse项目里面进行转换,然后再导入Android Stu ...
- 最新阿里云服务器免费SSL证书配置HTTPS的两种方法(图文教程二)
在大家学习如何利用免费SSL证书配置网站HTTPS之前,我们先要搞清楚为什么要开启HTTPS,这个绿色的小锁真的有用吗?所谓的HTTPS其实是(安全套接字层超文本传输协议)是以安全为目标的HTTP通道 ...
- Android中用GridView实现九宫格的两种方法(转)
Android中用GridView实现九宫格的两种方法http://blog.csdn.net/shakespeare001/article/details/7768455 1.传统办法:实现一个继承 ...
- 修改android的wifi客户端名称的两种方法
修改android的wifi客户端名称的两种方法 手机连接到无线路由时,在dhcp的客户端列表里面是这样的名称"android-89425253e5de3a2",这就是安卓 ...
- Android中Intent传递对象的两种方法(Serializable,Parcelable)
今天要给大家讲一下Android中 Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是 Bundle.putP ...
- Android:实现无标题的两种方法
实现无标题的两种方法:配置xml文件和编写代码设置 1.在AndroidManifest.xml文件中进行配置 实现全屏效果: android:theme="@android:style/T ...
- [转]Android中Intent传递对象的两种方法(Serializable,Parcelable)
http://blog.csdn.net/xyz_lmn/article/details/5908355 今天要给大家讲一下Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种 ...
- Android高手进阶教程(十七)之---Android中Intent传递对象的两种方法(Serializable,Parcelable)!
[转][原文] 大家好,好久不见,今天要给大家讲一下Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object); ...
- 查找linux系统下的端口被占用进程的两种方法 【转】
在linux下开发时,你的软件可能要使用某一个端口,或者想查找某一个端口是否被占用.需要怎么做呢??这的确是一个比较烦恼的问题,我也此为这个苦恼过.但是通过查找man手册,还是同事的交流.总结出来两种 ...
随机推荐
- win10 安装MySQL8.0.11记录。
参考了博客A:https://blog.csdn.net/m0_37788308/article/details/79965378 博客B:https://blog.csdn.net/fxbin123 ...
- linux中终端字体样式显示不正常
问题:Centos终端中,字体显示不正常,中间感觉有空格,空格和单词傻傻分不清. 解决办法: yum groupinstall "Chinese Support" yum grou ...
- Java 写入pdf文件
import java.awt.Color; import java.io.File; import java.io.FileOutputStream; import com.lowagie.text ...
- oracle 基础知识(三)--SCN
一,SCN的介绍 SCN(System Change Number),也就是通常所说的系统改变号或者系统提交号,是数据库中非常重要的一个数据结构. SCN用以标识数据库在某个确切时刻提交的版本 ...
- [转]how to use both JDK 7 and JDK 8 in one build
Note: This article is original from https://gist.github.com/aslakknutsen/9648594 JDK 8 Released Most ...
- nginx安装及优化
1.pcre及nginx安装包下载 wget http://www.pcre.org/ pcre用yum安装即可 http://nginx.org/en/download.html 2.安装 -安 ...
- MySQL之基本语句
SQL是Structure Query language(结构化查询语言)的缩写,它是使用关系模型的数据库应用语言.在众多开源数据库中,MySQL正是其中最杰出的代表,MySQL是由三个瑞典人于20世 ...
- SQL Server Profiler(转载)
SQL Server Profiler工具 一.SQL Profiler工具简介 SQL Profiler是一个图形界面和一组系统存储过程,其作用如下: 图形化监视SQL Server查询: 在后台收 ...
- CentOS初使用命令总结
最近买了一台aliyun(ECS服务器)用来学习使用,初次使用难免要走弯路.遇到一些问题好长时间解决不了,结果经人指点豁然开朗.于是乎,总结了一些新生上路经验. 首先要解决的问题是:通过PuTTY.S ...
- 互联网轻量级框架SSM-查缺补漏第一天
简言:工欲其事必先利其器,作为一个大四的准毕业生,在实习期准备抽空补一下基础.SSM框架作为互联网的主流框架,在会使用的基础上还要了解其原理,我觉得会对未来的职场会有帮助的.我特意的买了一本<J ...