zoukankan      html  css  js  c++  java
  • 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:ProgramFilecgwinin;D:ProgramFileandroid-ndk-r7;

    2、eclipse里添加:

    C_INCLUDE_PATH D:ProgramFilecgwinlibgcci686-pc-cygwin4.7.3include

    CPLUS_INCLUDE_PATH:D:ProgramFilecgwinlibgcci686-pc-cygwin4.7.3includec++;D:ProgramFilecgwinlibgcci686-pc-cygwin4.7.3includec++ackward;D:ProgramFilecgwinlibgcci686-pc-cygwin4.7.3include

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

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

  • 相关阅读:
    Servlet常用类
    Java库使用----xstream1.3.1
    字符串处理---统计每一行字符串当中的字符“u”个数
    读写锁
    求阶乘
    Fibonacci数列
    22.2-按照升序显示不重复的单词
    22.1-在散列集上进行集合操作
    完美世界-2015校园招聘-java服务器工程师-成都站
    运用jQuery写的验证表单
  • 原文地址:https://www.cnblogs.com/xsgame/p/3461957.html
Copyright © 2011-2022 走看看