android ndk 环境搭建及基本编程思路

原创 2012年03月28日 16:09:00

本文主要是介绍一下android ndk环境搭建及基本编程思路。

本文测试环境为 Windows Xp3+Eclipse Indigo+jdk6.0+Android2.2+ADT1.6+android+ndk-r7b+Cygwin1.7
一、下载android ndk (以最新版本为准)
您可以下载android-ndk-r7b安装包,下载地址:
地址:http://developer.android.com/sdk/ndk/index.html
下载后解压缩到你的工作目录,例如:C:\Android\android-ndk-r7b,结果如下图:


Android ndk包含build、docs、samples、sources、GNUmakefile、ndk-build、ndk-gdb及readme等内容。
其中samples下面包含几个实例开发演示项目。

二、下载安装Cygwin
由于ndk开发大都涉及到C/C++在GCC环境下编译、运行,所以在Windows环境下,需要模拟Linux模拟编译环境,下载地址:
http://www.cygwin.com/
下载后是个setup.exe文件,使用过程如下:
第一步:运行setup程序,第一步图略,直接点击Next进入下一步。
第二步:选择安装方式,第一次可以采用Install from Internet在线下载安装,如有现成的离线包,可以选择离线安装(Install from Local Directory)

第三步:选择安装目录,比如C:\Android\cygwin,注意此目录是指Cygwin最终的安装目录,不是下载文件暂存目录。

第四步:设置本地包暂存路径
暂存目录默认是放到setup.exe的同级目录下,下载后名字类似ftp%3a%2f%2fcygwin.mirrors.pair.com%2f这样格式。

第五步:设置网络连接方式,默认即可。

第六步:选择下载站点地址
可以尝试几个看哪个速度快就用哪个地址(如果感觉不快就点取消,再次来过)。

第七步:等待加载安装项载入,选择安装项
编译ndk,在默认设置下,只需选择Devel(点击列表中Devel,将后面的Default改为Install,图中红色方框所示),其它均为默认状态。

第八步:等待下载并安装
下载完成后会自动安装到上文设置的安装目录。
第一次下载完成后,最好把下载的包目录做个备份,下次安装同样的环境可以直接使用离线安装方式(第二步中选择本地安装)。

三、验证Cygwin环境
安装完成后,先运行Cygwin一次(Cygwin.bat),以便创建一些用户环境文件,分别输入:
make -v 和gcc -v
如果安装成功,会有make和gcc相关版本信息打印出来,如下图。

四、配置ndk路径设置
可以在cygwin中通过vim修改,也可以在windows安装目录中修改 home\<你的用户名>\.bash_profile 文件中最后添加环境变量
ndk=/cygdrive/c/Android/android-ndk-r7b
export ndk
其中ndk=/cygdrive/<你的盘符>/<android ndk 目录> ,"ndk"这个名字随便起,以后经常用不要太长。

重启cygwin,输入:
cd $ndk
可进入ndk对应目录说明设置正常。

五、编译演示工程
现在就可以编译相关ndk工程了(一些用c/c++写的程序),编译方法如下:
1、在cygwin命令行下,进入android项目工作目录:
cd $ndk
2、依次进入samples\hello-jni目录,(完整路径示例: C:\Android\android-ndk-r7b\samples\hello-jni)
3、运行
$ndk/ndk-build
注意:该命令$ndk和/ndk-build是连接到一起的,中间没有空格,实际使用时是打入完整的$ndk/ndk-build,不要只打ndk-build。
4、正常编译完成后会在你的项目libs/armeabi目录下生成对应的 libhello-jni.so文件。

六、导入静态目标库到Android项目
编译完成后会得到*.so静态目标库后,就可以导入工程环境Eclipse Android项目中使用,本步骤演示属于ndk目标库+Andriod APK样式,
此外还有Android源码直接开发、直接编译方式。使用方法如下(示例):
1、在Eclipse中新建一个工程HelloJni,HelloJni.java中的代码可参考ndk对应samples下的演示代码调用方法。
      或者直接将samples中的hello-jni导入到Eclipse中。
2、将ndk编译项目目录下的jni和libs文件夹拷贝到新建工程目录下,这两个文件夹要和工程中的src和res文件在同一目录下。
3、运行Eclipse项目,就可以在虚拟机上看到hello-jni.c函数中输出字符串。


 

 

一步一步学习androidNDK编程(hello world)

上一篇博客,已经搭建好了windows下的linux环境(cygwine),这次我们试着写一个hello world。首先需要去android的官网下载android-ndk压缩包,之后解压,进入解压...
  • mockingbirds
  • mockingbirds
  • 2015年04月19日 21:05
  • 2960

Android jni/ndk编程一:jni初级认识与实战体验

Android平台很多地方都可以看到jni的身影,比如之前接触到一个投屏的项目,主要的代码是c/c++写的,然后通过Jni供java层调用;另外,就拿Android系统中的Service来说,很多的S...
  • u011913612
  • u011913612
  • 2016年09月19日 18:53
  • 1877

android_c++ 高级编程NDK学习笔记一

第一章 深入了解android NDK 2.1 Android 提供的组件:     ARM,x86和MIPS交驻编译器     构建系统     Java原生接口头文件     C库  ...
  • retacn_yue
  • retacn_yue
  • 2014年06月13日 12:47
  • 2628

老码农谈NDK开发

关于NDK,我也天真过5、6年前刚拿到HTC的G1开始做Android开发时,得知Java可以和C混编激动不已,真的是拿到钥匙见什么都是锁,老想着用NDK做些事情。到后来公司做了一个带有强烈技术风格的...
  • a345017062
  • a345017062
  • 2016年01月16日 17:48
  • 3207

NDK Socket编程:面向连接的通信(tcp)

使用posix socket api,java层调用c层
  • hai836045106
  • hai836045106
  • 2014年10月21日 10:53
  • 8799

Android NDK具体作用讲解

Android操作系统是一款开源的手机操作系统。从发布至今,通过各个公司以及编程爱好者们的修改,其性能正在一步步的向前健康的发展。在这里我们可以了解到Android NDK这一新晋发布的工具,从另一角...
  • zhaoyuyong
  • zhaoyuyong
  • 2015年09月16日 09:43
  • 521

android_c++ 高级编程NDK学习笔记五

原生线程   1 示例项目 2 java线程 创建项目NativeThread 添加原生支持android tools--->add Native support 创建用户界面: acti...
  • retacn_yue
  • retacn_yue
  • 2014年08月06日 14:42
  • 2866

Android NDK开发之旅(2):Android Studio中使用CMake进行NDK/JNI开发(初级)

CMake是一款比make更强大的编译自动配置工具,它可以根据不同平台、不同的编译器,并通过CMakeLists.txt文件中简单的语句来描述所有平台的编译过程,生成相应的Makefile文件或pro...
  • AndrExpert
  • AndrExpert
  • 2017年06月07日 23:20
  • 2233

如何用NDK创建一个标准的android环境交叉编译工具链(Cross Toolchain)

转自:http://blog.sina.com.cn/s/blog_4a0a39c30101q1u4.html http://www.linuxidc.com/Linux/2014-11/109905...
  • richu123
  • richu123
  • 2016年04月13日 10:11
  • 3496

基于V4L2驱动程序的USB摄像头Android(JNI)的编写(一)

video4 linux2(V4L2)是Linux内核中关于视频设备的内核驱动,它为Linux中视频设备访问提供了通用接口,在Linux系统中,本文主要介绍如何使用V4L2驱动程序打开我们的USB摄像...
  • JansonZhe
  • JansonZhe
  • 2015年08月06日 17:00
  • 4400
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android ndk 环境搭建及基本编程思路
举报原因:
原因补充:

(最多只允许输入30个字)