Windos下Android(ADT Bundle)配置NDK的两种方法------ADT、Cygwin、NDK配置汇总(转)

时间:2023-12-29 15:56:56

转自: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里。

Windos下Android(ADT Bundle)配置NDK的两种方法------ADT、Cygwin、NDK配置汇总(转)

Windos下Android(ADT Bundle)配置NDK的两种方法------ADT、Cygwin、NDK配置汇总(转)

(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文件所在目录。

Windos下Android(ADT Bundle)配置NDK的两种方法------ADT、Cygwin、NDK配置汇总(转)

Windos下Android(ADT Bundle)配置NDK的两种方法------ADT、Cygwin、NDK配置汇总(转)

Windos下Android(ADT Bundle)配置NDK的两种方法------ADT、Cygwin、NDK配置汇总(转)

Windos下Android(ADT Bundle)配置NDK的两种方法------ADT、Cygwin、NDK配置汇总(转)

Windos下Android(ADT Bundle)配置NDK的两种方法------ADT、Cygwin、NDK配置汇总(转)

编译运行时报错:

/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/.....***多个目标匹配,停止。

Windos下Android(ADT Bundle)配置NDK的两种方法------ADT、Cygwin、NDK配置汇总(转)

需在工程里将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成功时显示:

Windos下Android(ADT Bundle)配置NDK的两种方法------ADT、Cygwin、NDK配置汇总(转)

总结:如果只看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++程序时暂未发现任何异常。