转载请注明出处:http://blog.csdn.net/allen315410/article/details/41800955

Android下的NDK开发是Android开发中不可或缺的一部分,通过Google提供的NDK套件,我们可以使用JNI这座桥梁在Java和C/C++之间建立联系(互相调用)。那么,为什么在Android开发中需要了解NDK开发呢?诚然,这些原因有很多说法,在我总结来是这样的。C/C++是比Java还要古老的编程语言,由于其古老的特性,导致早期有很多优秀的类库出现,譬如处理视频编解码的FFMPEG类库,这些复杂的类库早就被C/C++编写过,我们在处理视频编解码的时候没必要重复“造轮子”,所以能直接拿来用的就直接拿来用,但是这个直接法很难做到,因为Java的编译环境的原理跟C/C++的不同,所以就必须找个中间者为Java和C/C++代码建立关系,这个中间者就是JNI。还有一个重要的原因就是效率问题,Java是跨平台的语言,在不同的平台有不同的JVM实现,Java源码需要首先编译成.class文件,然后让.class文件运行在不同的JVM解释执行上,这样的步骤造成了效率的浪费,而不同的是C/C++,可以直接编译成特定平台的二进制文件,直接运行在特定平台上,效率比Java高效很多,所以在某些特定的环境下,还是需要使用C/C++来解决效率问题,Java只负责处理C/C++返回来的结果就可以,这样的话Java和C/C++互调就显得相当重要了。

做NDK开发前最好需要了解一下C/C++的语法,通常这部分的代码不需要Android程序员编写,但是Android程序员最好能看懂C/C++源码,这样做会事半功倍一点,关于C/C++语法的学习不是这里的重点,大家感兴趣的话可以直接找资料学习,请从柜底抽出大学教材《C语言程序设计——谭浩强》,拍拍上面的灰尘,随便过一遍^.^

一、明确一些基本概念

1,JNI

Java Native Interface Java 本地开发的接口。JNI 是一个协议,这个协议用来沟通java代码和外部的本地代码(c/c++)。通过这个协议,java代码就可以调用外部的c/c++代码,外部的c/c++代码也可以调用java代码。

2,CDT

C/C++ Develop tools,C/C++开发工具。是Eclipse上的一个插件,主要是让C/C++代码能够高亮显示。这个组件不是必要的,除非你是C/C++高手,喜欢在记事本上写代码,对于一般的程序员还是装一下吧,高亮显示很重要的。

3,NDK

Native Develop Kits,本地开发套件。这个套件是非常重要的,是Google提供给我们的一个在Android上开发JNI程序的工具集,有了它会使得开发高效的多。

4,cygwin

Windows下的Linux模拟器。大家知道Android是基于Linux内核的操作系统,所以在编译C/C++源码的使用得使用Linux环境,将其编译成Linux特定平台的文件.so或者.a。好消息是,NDK高版本中提供了Windows下开发套件的支持,cygwin可以不使用,直接在Windows下平台编译也是可行的,但是为了显示学习,最好还是需要了解一点的。

二、NDK环境搭建

1,安装CDT

      如果是使用的是从Android Develop官网上下载的集成了ADT一整套的IDE的话,请跳过这一步,因为ADT中已经集成好了CDT插件,直接使用就可以了。如果使用的是传统的Eclipse自装插件的方式的话,有两种方式可供安装CDT。
(1)下载CDT插件进行安装。在Eclipse社区官网可以找到下载链接https://eclipse.org/cdt/
(2)在线安装。步骤如下:
打开Eclipse工具栏Help-->install new software

选择 Helios- http://download.eclipse.org/release/helios ,等待展开,选择Programing language

 
 

选择c/c++ 开发工具

一路next下去,同意licenses。

安装成功会提示是不是确认重启eclipse,重启就完成安装。

2,安装cygwin

NDK需要运行在linux环境下,cygwin是windows下模拟linux的一个工具。Cygwin是一个程序,支持很多插件。可以去cygwin的官网上下载http://www.cygwin.com/双击安装,也可以从CSDN资源页上下载我上传的资料包,里面包含cygwin的安装程序和安装包,地址是:http://download.csdn.net/detail/lee_tianya/8235323

        选择安装方式请注意了,一般可以选择从Internet上在线安装,不过速度很慢,而且中途不能断开,如果网速不好中途断开了,那么就必须从头开始下载,非常不舒服。第二种方式是本地安装,先下载好安装所需要的文件放在本地磁盘上,然后选择安装目录即可,我这里是本地安装。
 
选择安装目录的时候请注意:安装目录不可以出现空格,最好不要出现中文等非英文字符。
 

安装完毕后 ,桌面会出现一个快捷图标,双击快捷小图标,打开cygwin。

首先程序会初始化

敲入命令

Make –v

显示出来 GNU Make 的版本 ,说明我们的cygwin模拟的linux编译环境 模拟成功了.

3,安装NDK

首先FQ上Google Android Develop的官网去下载NDK,地址是http://developer.android.com/tools/sdk/ndk/index.html


 

我这里选用的Windows版本64位的r10d版本的ndk,是当前最新版本,android-ndk-r10d-windows-x86_64.exe,下载完成后点击exe文件,会自定解压到当前目录下,这个过程比较漫长,可见升级造成安装的过大啊,好,解压完毕之后我移动E:/NDK目录下了。

做完上面的一些步骤后,环境基本上是搭建完成了,现在我们使用cygwin模拟Linux环境下,进入Windows路径E:/NDK/android-ndk-r10d下,执行ndk-build脚本。

第一步:进入根目录找到根目录下的cygdrive文件,该文件对应的是Windows下的所有盘符:

第二步:进入ndk所在目录:

第三步:执行ndk-build脚本

通过上面的步骤,我们就可以使用ndk-build脚本了,但是这样的过程是在是太繁琐了,使用起来是非常的不方便,那么下面我们来使用一下简便的方法吧,配置文件。

为了方便直接在命令行里面使用ndk-build,需要给cygwin的环境变量里面添加ndk的目录

首先

我们在cygwin安装的目录下找到etc/profile文件,这个文件就是cygwin的配置文件,用记事本打开这个文件,找到如下一行:

然后

我们在cygwin的控制台上找到ndk的解压路径

接下来

我们复制这个路径到Path中,注意Linux环境变量中的路径分割使用英文冒号“:”来区分

最后
       检测是否配置完成,在cygwin控制台下输入“ndk-build”命令
若命令行显示的是如上图所示的信息,说明配置完成了,可以使用了,若不是这种情况,请根据文章的描述再进行一次配置。
 
        好了,NDK开发中的环境搭建到此就结束了,下面就可以使用NDK环境来开发了,关于NDK开发,后续的文章会慢慢介绍。

Android NDK 开发(一)--环境搭建【转】的更多相关文章

  1. Android NDK r8 windows环境搭建

    Android NDK r8 windows环境搭建 一.默认基础环境为已经完成Android开发环境的搭建 需要的软件及插件 1. JDK-7u25 2. Eclipse 3. Android SD ...

  2. Android NDK开发-1-环境搭建

    1.NDK介绍 Android NDK 是在SDK前面又加上了“原生”二字,即Native Development Kit,因此又被Google称为“NDK”.众所周知,Android程序运行在Dal ...

  3. Android NDK开发-2-环境搭建

    1.环境变量配置NDK 2.选中项目,右键属性菜单,创建一个新的编译器

  4. Android NDK开发-3-环境搭建

    1.创建Android工程 2.打开android-ndk32-r10-windows-x86_64\android-ndk-r10\samples例子 3.打开hello-jni,拷贝java代码和 ...

  5. windows下用ADT进行android NDK开发的具体教程(从环境搭建、配置到编译全过程)

    郑重申明:如需转载本博客,请注明出处,谢谢! 这几天在学习android NDK的开发.那么首先让我们来看看android NDK开发的本质是什么. NDK(Native Development Ki ...

  6. android NDK开发环境搭建

    android NDK开发环境搭建 2012-05-14 00:13:58 分类: 嵌入式 基于 Android NDK 的学习之旅-----环境搭建 工欲善其事必先利其器 , 下面介绍下 Eclip ...

  7. android 串口开发第一篇:搭建ndk开发环境以及第一个jni调用程序

    一:ndk环境搭建 1:开发环境 我使用的是android studio 2.3.3版本,搭建ndk开发环境比较简单,打开File----Settings----Appearance&Beha ...

  8. Windows下搭建Android NDK开发环境及命令行编译

    首先说明本文内的相关安装操作参考<Pro Android C++ with the NDK>一书. 安装 Windows搭建Android NDK开发环境需要安装如下部分(同时需要配置对应 ...

  9. Android NDK开发初识

    神秘的Android NDK开发往往众多程序员感到兴奋,但又不知它为何物,由于近期开发应用时,为了是开发的.apk文件不被他人解读(反编译),查阅了很多资料,其中有提到使用NDK开发,怀着好奇的心理, ...

  10. Android下OpenCV的环境搭建

    目录(?)[-] 前言 系统环境 相关工具 Android ADT环境搭建 Android SDK环境变量的配置 Android NDK的安装与配置 OpenCV for Android 环境搭建 基 ...

随机推荐

  1. SqlServer基础:Bit类型

    SqlServer的bit类是只0或者1,默认不输入值时为null,但是如果输入的值不是0和1时,则默认填充的值为1

  2. 最常用App开发工具更新总结

    程序员都知道,App常用开发工具有Sublime Text 3.Webstorm.Eclipse和APICloud Studio等,那么这些开发工具在2016年又有什么重大更新呢? 1.APIClou ...

  3. tomecat 配置修改 及启动配置

    a.如果tomcat是以bat方式启动的,则如下设置: 修改TOMCAT_HOME/bin/catalina.sh 在“echo "Using CATALINA_BASE: $CATALIN ...

  4. VMware (威睿) 虚拟化产品简介

    VMware vSphere 是VMware(威睿)的一个虚拟化产品,VMware vSphere 是业界领先且最可靠的虚拟化平台.vSphere将应用程序和操作系统从底层硬件分离出来,从而简化了 I ...

  5. python eval

    缘起 小例子 def test_1(val): print "val", val, type(val) def test_2(val): print ) if __name__ = ...

  6. iOS 重写UITableViewCell之动态获取label文字的宽度进行布局

    #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @pr ...

  7. iOS SQLite 增删改查的封装(关系型)

    在工程里导入libsqlite3.tbd库(Xcode 7) #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder &l ...

  8. pptp记录用户登陆日志

    pptp vpn记录用户登录和流量信息(转) 这个问题困扰了我很久,终于在pppd的man文档里,发现了踪迹.在man中的SCRIPTS下有一系列的参数,其中PEERNAME就是登陆的用户名,并且在/ ...

  9. C# 集合-并发处理-锁OR线程

    每次写博客,第一句话都是这样的:程序员很苦逼,除了会写程序,还得会写博客!当然,希望将来的一天,某位老板看到此博客,给你的程序员职工加点薪资吧!因为程序员的世界除了苦逼就是沉默.我眼中的程序员大多都不 ...

  10. 通常Struts框架会自动地从action mapping中创建action对象

    开发者不必在Spring中去注册action,尽管可以这么去做,通常Struts框架会自动地从action mapping中创建action对象 struts2-spring-plugin-x-x-x ...