前面介绍Windows下Android 开发环境配置,主要是面向JAVA开发环境,对只做APK上层应用开发人员来讲,基本够用了,由于Linux系统的权限限制和Android封装架构限制,很多涉及底层设备、接口、驱动控制的应用开发,不得不使用到本文的NDK开发环境(基于Android源码或内核源码修改),开发语言使用C/C++,NDK开发更接近于Linux开发,需要更多关于Linux应用编程知识。本文就介绍一下NDK环境搭建及基础编程思想。

本文演示环境:Windows 7 Ultimate+Cygwin+NDK r4。

基础阅读:

Windows下Android开发环境搭建和配置

Android开发入门之环境概念介绍

一、下载android NDK

您可以下载NDK r4 for Windows或NDK r5 for Windows安装包,下载地址:

地址:http://developer.android.com/sdk/ndk/index.html

下载后解压缩到你的工作目录,例如:E:\Android\develop,结果如下图:

Android NDK包含build、docs、samples、sources、GNUmakefile、ndk-build、ndk-gdb及readme等内容。samples下面包含几个实例开发演示项目,第一次接触NDK开发,建议先从示例开始。下面先看一下编译环境配置。

二、下载Cygwin

由于NDK开发大都涉及到C/C++在GCC环境下编译、运行,所以在Windows环境下,需要模拟Linux模拟编译环境,下载地址:

http://www.cygwin.com/

下载后是个setup.exe文件,使用过程如下:

第一步:运行setup程序,第一步图略,直接点击Next进入下一步。

第二步:选择安装方式,第一次可以采用Direct Connection在线下载安装,如有现成的离线包,可以选择离线安装(Install from Local Directory)。

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

第四步:设置本地包暂存路径

暂存目录默认是放到setup.exe的同级目录下,下载后名字类似ftp%3a%2f%2fcygwin.mirrors.pair.com%2f这样格式。

第五步:设置网络连接方式

第六步:选择下载站点地址

起初尝试几个看哪个速度快就用哪个地址(如果感觉不快就点取消,再次来过)。

第七步:等待加载安装项载入,选择安装项

我们编译NDK,在默认设置下,只需选择Devel(点击列表中Devel,将后面的Default改为Install,图中箭头所示),其它均为默认状态。

第八步:等待下载完成

下载完成时间决定于你选择的安装包数量及网络连接速度,比如按照本文默认的选择方式,可能需要4-5个小时,下载后压缩包约750M,下载完成后会自动安装到上文设置的安装目录。

提醒:第一次下载完成后,最好把下载的包目录做个备份,下次安装同样的环境可以直接使用离线安装方式(第二步中选择本地安装)。

三、验证Cygwin环境

安装完成后,先运行Cygwin一次(Cygwin.bat),以便创建一些用户环境文件,分别输入:

make -v

和,

gcc -v

如果检测成功,会有make和gcc相关版本信息打印出来,如下图。

四、配置NDK路径设置

可以在cygwin中通过vim修改,也可以在windows安装目录中修改 home\<你的用户名>\.bash_profile 文件中最后添加环境变量

NDK=/cygdrive/e/Andriod/develop/android-ndk-r4

export NDK

其中NDK=/cygdrive/<你的盘符>/<android ndk 目录> ,"NDK"这个名字随便起,以后经常用不要太长。

重启cygwin,输入:

cd $NDK

可进入ndk对应目录说明设置OK。

五、编译演示工程

现在就可以编译相关NDK工程了(一些用c/c++写的程序),编译方法如下:

1、在cygwin命令行下,进入android项目工作目录:

cd $NDK

2、依次进入samples\hello-jni目录,(完整路径示例: E:\Andriod\develop\android-ndk-r4\samples\hello-jni)

3、运行

$NDK/ndk-build

注意:该命令$NDK和/ndk-build是连接到一起的,中间没有空格,实际使用时是打入完整的$NDK/ndk-build,不要只打ndk-build。

4、正常编译完成后会在你的项目libs/armeabi目录下生成对应的 .so文件。

六、导入静态目标库到Android项目

编译完成后会得到*.so静态目标库后,就可以导入工程环境Eclipse Android项目中使用,注意,NDK编程并非一定要把这个目标库导入Android项目使用,除了本步骤描述的使用方法之外,还有Android源码直接修改、编译,然后烧录到测试机的开发方式,那样可以实现应用程序默认安装、权限开机提升等等更“彻底”的功能。综合一下:

本步骤演示属于NDK目标库+Andriod APK样式,此外还有Android源码直接开发、直接编译方式(确切一点已经淡化Android所谓的工程概念了,当然源码开发目前似乎还无法直接在Windows下进行,好像必须使用Linux家族系统进行,天缘稍后文章会有所涉及)

使用方法如下(示例):

1、在Eclipse中新建一个工程HelloJni,HelloJni.java中的代码可参考NDK对应 sample下的演示代码(android-ndk-r4\samples\hello-jni\tests\src\com\example \HelloJni)调用方法。

2、将NDK编译项目目录下的jni和libs文件夹拷贝到新建工程目录下

注意这两个文件夹要和工程中的src和res文件在同一目录下。然后进入Eclipse中刷新工程(会看到多出两个文件夹)。

3、运行Eclipse项目,就可以在虚拟机上看到hello-jni.c函数中输出字符串。

4、后续您可以试着修改库源程序或项目JAVA程序来熟悉NDK整个开发过程。

Windows下有关NDK的安装资料相关推荐

  1. iis怎么更换php版本,Windows 下PHP+IIS的安装方法(PHP版本为5.0)

    Windows 下PHP+IIS的安装方法(PHP版本为5.0) 最近需要使用下PHP相关的东西,查找了一些资料,现将PHP配置方法记录一下,以免以后忘记,呵呵,初学者,各位同学不要拍砖,开始正题,主 ...

  2. Windows下批量下载rpm安装文件

    Windows下批量下载rpm安装文件 1.需求 内网服务器需要更新yum源,又因为内网不允许接公网. 就转换成了在win10下,批量下载rpm安装包.找了 一些资料,基本没有问题. 2.准备工作 h ...

  3. Windows下R语言环境安装

    Windows下R语言环境安装 R官网: https://www.r-project.org/ 按照如下步骤下载windows中的安装文件R-4.1.0-win.exe 文件已经下载完成:R-4.1. ...

  4. Windows下Go语言的安装和运行

    参考:https://blog.csdn.net/SquirrelYuyu/article/details/82776029 Windows下Go语言的安装和运行 文章目录 Go语言的安装与配置 Go ...

  5. Windows下VisualSVN Server的安装与配置方法(图文)

    这篇文章主要介绍了Windows下VisualSVN Server的安装与配置方法,比较详细,需要的朋友可以参考下 VisualSVN Server是免费的,而VisualSVN是收费的.Visual ...

  6. windows 下的CACTI的安装方法

    windows 下的CACTI的安装方法 记得第一次工作的时候,主管非得让我学在windows 下的CACTI的安装,把我急的,明明是Linux下的东东,硬让我在windows下面装,不过有不敢不听话 ...

  7. windows下 python 使用 pip 安装TA-Lib报错的原因及解决方法

    windows下 python 使用 pip 安装TA-Lib报错的原因及解决方法 问题环境 问题描述 问题原因 & 解决办法 问题环境 Windows 10 x64 .python 3.8. ...

  8. Windows下用ndk编译ffmpeg

    Windows下用ndk编译ffmpeg   第一步:创建一个android工程,然后将ffmpeg整体放到jni下,并创建Android.mk和Application.mk Android.mk: ...

  9. 通过cmd命令,使Scite在windows下构建,并安装lua环境与中文乱码问题

    通过cmd命令,使Scite在windows下构建,并安装lua环境与中文乱码问题 Scite工具下载与安装 https://scite.en.softonic.com/download 1.下载完后 ...

最新文章

  1. 面试必备:Java线程池解析
  2. python:字典,元组
  3. mysql 复制表结构到一个新表_MySQL复制表数据或表结构到新表中
  4. 序列化框架MJExtension详解 + iOS ORM框架
  5. python搭建selenium_自动化测试之路3-selenium3+python3环境搭建
  6. (转)华为面试题算什么,这个背会了外企随便进
  7. 403保护网站服务器,HTML5服务器禁止访问403错误动画
  8. mysql 备份恢复 asp_ASP中怎么实现SQL数据库备份、恢复!
  9. react 富文本编辑器 react-draft-wysiwyg 的使用总结
  10. qq音乐推荐下载器(一)——模拟搜索,下载,读取评论制作词云并将下载数据传至数据库
  11. 天线知识详解:天线原理、天线指标测试
  12. 人智导(二):启发式搜索
  13. ARCGIS之土地报备坐标(报盘数据)txt批量导出工具简介
  14. matlab逆变器原理,MATLAB中的单相全桥逆变器电路建模与仿真
  15. 利用C语言写一个等额本息的还款计算器。
  16. 【调色台】达芬奇调色台系列
  17. 20190422每周精品之认知
  18. 中国不投美国国债还能投什么?
  19. java导出excel 复杂的 合并单元格
  20. SEO面试题与面试攻略,SEO面试技巧以及常见问题分享

热门文章

  1. Scrum看板工具Leangoo记录我的装修事件,hhhh
  2. 小白搞懂了GC全过程,全靠阿里专家12张图
  3. 4.5万字手把手教你实现MySQL TB级数据存储!!
  4. Hive介绍与核心知识点--大数据技术栈12
  5. 除了Tapd,还有哪些好用的项目管理工具,适用于100+人的大中型团队?
  6. 07 Java面试反射原理
  7. 树莓派c语言输出pwm波,树莓派硬件PWM输出程序
  8. 天线3db波束宽度_天线的主瓣波束宽度越窄天线增益越高.PPT
  9. transactionscope 中的异步 处理 异常_.NET Core中TransactionScope事务处理方法介绍及注意事项...
  10. 基于单目摄像头的BEV实例预测(ICCV 2021)