Android下NDK开发环境搭建
Android下NDK开发环境搭建
1. AndroidNDK安装与配置
1.1 NDK简介
Android NDK是一套允许开发人员使用本地代码(如C/C++)进行Android APP部分功能开发的工具,通过这个工具,我们可以把用C/C++代码编译成可以直接运行在Android平台上的本地代码,这些本地代码以动态链接库( *.so )的形式存在,也正因为这样,我们可以通过复用这些动态链接库从而复用本地代码。
那么,通过NDK这个开发工具包,那么我们是否可以将一个APK完全使用C/C++来编写呢?
答案是不可以的。众所周知,Android应用程序是运行在Dalvik虚拟机上的。而NDK只开发了部分接口,所以NDK只是允许开发人员通过C/C++实现Android APP的部分功能。由于Android系统本身就是Linux核心,NDK只是负责把这些本地代码编写成可以运行在linux上的动态链接库,从而绕过了Dalvik虚拟机,直接运行在Android平台上了。
The NDK is atoolset that allows you to implement parts of your app using native-codelanguages such as C and C++. For certain types of apps, this can be helpful soyou can reuse existing code libraries written in these languages,
but most appsdo not need the Android NDK.
Before downloadingthe NDK, you should understand that the NDK will not benefit most apps. As adeveloper, you need to balance its benefits against its drawbacks. Notably,using native code on Android generally does not result in
a noticableperformance improvement, but it always increases your app complexity. Ingeneral, you should only use the NDK if it is essential to your app—neverbecause you simply prefer to program in C/C++.
Typical goodcandidates for the NDK are CPU-intensive workloads such as game engines, signalprocessing, physics simulation, and so on. When examining whether or not youshould develop in native code, think about your requirements
and see if theAndroid framework APIs provide the functionality that you need.
1.2 NDK下载
下载地址:http://developer.android.com/tools/sdk/ndk/index.html
图1
可以看出现在的目标平台都有32和64位之分。
1.3 NDK安装
直接把下载的安装包解压到我们想要放的路径下即可,我这里是把加压后的android-ndk-r10b(此目录下就有ndk-build.cmd编译工具)放在D:\ADT bundle目录下。
1.4 NDK环境配置
配置环境变量,把ndk-build.cmd所在的位置D:\ADT bundle\android-ndk-r10b添加系统变量Path的添加此路径信息,如下图:
图2
1.5 NDK的安装验证
完成上面的步骤之后,NDK的安装到此就完成了,下面我们来验证一下NDK安装成功与否. 打开cmd.exe,在里面输入ndk-build -version,输出以下内容,表示安装成功。
图3
1.6 NDK编译程序
现在我们用安装好的NDK来编译一个NDK提供的sample程序hello-jni(我的目录位于:D:\ADT-bundle\android-ndk-r10b\samples\hello-jni)。
(1) 进入hello-jni目录下。
(2) 直接输入命令ndk-build编译本地代码,输出以下内容,表示成功编译生成动态链接库,同时我们在hello-jni\obj\local\armeabi路径下可以看到编译好的libhello-jni.so。
图4
1.7 验证hello-jni
(1) 在Eclipse,选择File--->New--->Project,如下图:
图5
选择Android--->Android Project from ExistingCode,然后选择Next,如下图:
图6
Root Directory选择hello-jni目录,且选择Finish。在这之前记得是要先编译hello-jni且成功so文件。
(2) 打开AVD,然后选择Run--->Run As--->Android Application,运行界面如下图所示:
图7
2. Cygwin和CDT
Cygwin:由于NDK开发大都涉及到C/C++在GCC环境下编译、运行,所以在Windows环境下,需要用Cygwin模拟Linux编译环境,下载地址:http://www.cygwin.com/,根据PC系统是32位还是64位系统来选择下载对应的安装文件。
android-ndk-r7-windows往上的版本都集成了cygwin,因此无需再安cygwin。所谓的集成了cygwin就是说,安装包解压后有个ndk-build.cmd命令。配置eclipse直接调这个cmd命令,完成编译。
CDT:CDT是C/C++在Eclipse平台下的开发工具.它提供的功能包括:C/C++编辑器(一些基本的功能:语法高亮显示,代码编辑等),C/C++调试器,C/C++ Launcher,剖析器,内容提示,Makefile生成器等。
Android官网下载Android的开发工具ADT(Android Development Tool的缩写),该工具集成了最新的ADT以及Eclipse,还有一个最新版本SDK。解压之后就可以用了
ADT插件:管理Android SDK和相关的开发工具的
NDK插件:用于开发Android NDK的插件,ADT版本在20以上,就能安装NDK插件,另外NDK集成了cygwin和CDT插件,我下载的android-ndk32-r10b-windows-x86_64压缩包解压后有1.4GB。
所以不需要单独下载cygwin和CDT了。我下载的是谷歌提供的ADT 绑定版,那么它已经默认安装好了相应的CDT了,打开Eclipse--->Help--->About ADT,如下图:
图8
3. Eclipse中使用NDK
3.1 NDK配置
打开Eclipse,点Window->Preferences->Android->NDK,设置NDK路径,例如我的是:D:\ADT-bundle\android-ndk-r10b
图9
验证NDK配置是否OK可以导入一个现有的工程来验证,如1.7节描述,也可以通过新建Android工程。
3.2 CDT验证
在Eclispe中新建一个项目,如果出现了C/C++项目,则表明CDT插件安装成功了,选择File--->New--->Project,如下图:
图10
参考:
C++开发安卓、windows下搭建Android NDK开发环境
http://www.cr173.com/html/24813_1.html
Android之NDK开发
http://blog.csdn.net/loongembedded/article/details/39718283
NDK开发环境搭建_r8
http://www.cnblogs.com/baronzhao/archive/2012/07/10/2585181.html
Android新版NDK环境配置(免Cygwin)
http://blog.csdn.net/codezjx/article/details/8879670
windows下eclipseandroid-ndkr7b环境配置
http://blog.csdn.net/xinzheng_wang/article/details/7416543
Windos下Android(ADT Bundle)配置NDK的两种方法------ADT、Cygwin、NDK配置汇总
http://blog.csdn.net/yanzi1225627/article/details/16897877
Android NDK环境搭建
http://jingyan.baidu.com/article/5d6edee22d908799eadeec9f.html
Android下NDK开发环境搭建的更多相关文章
- android Jni NDK开发环境搭建及其简单实例的编写
android Jni NDK开发环境搭建及其简单实例的编写 由于工作需要,需要采用开发想要的JNI,由于之前没有接触过安卓的开发,所以更加网上的帖子,学习了下.遇到了些问题,然后总结下学习过程中 ...
- Android Studio NDK开发环境搭建
一. 下载安装Android studio 和 NDK 二. 在Android studio中配置NDK(和SDK配置一样) 三. 用Android studio建立一个工程,打开proj ...
- android NDK开发环境搭建
android NDK开发环境搭建 2012-05-14 00:13:58 分类: 嵌入式 基于 Android NDK 的学习之旅-----环境搭建 工欲善其事必先利其器 , 下面介绍下 Eclip ...
- NDK在windows下的开发环境搭建及开发过程
在Android应用的开发工程中,不管是游戏还是普通应用,都时常会用到.so即动态链接库,关于.so是什么玩意儿,有什么好处,这个大家可以在网上查一下,本人不做过多解释..so本是linux下的文件类 ...
- Android下OpenCV的环境搭建
目录(?)[-] 前言 系统环境 相关工具 Android ADT环境搭建 Android SDK环境变量的配置 Android NDK的安装与配置 OpenCV for Android 环境搭建 基 ...
- android 5.0开发环境搭建
Android 5.0 是 Google 于 2014 年 10 月 15 日发布的全新 Android 操作系统.本文将就最新的Android 5.0 开发环境搭建做详细介绍. 工具/原料 jdk- ...
- Windows 7 下 PHP 开发环境搭建(手动)
Windows 7 下 PHP 开发环境搭建 1.说明 做开发的都知道一句话,就是“站在巨人的肩膀上”.确实现在打开浏览器随便一搜很多一键安装PHP环境的软件,比如wamp.xampp.AppServ ...
- spark-windows(含eclipse配置)下本地开发环境搭建
spark-windows(含eclipse配置)下本地开发环境搭建 >>>>>>注意:这里忽略JDK的安装,JDK要求是1.8及以上版本,请通过 java ...
- ubuntu下Nodic开发环境搭建
ubuntu下Nodic开发环境搭建 1.编译环境 ubuntu可直接装gcc编译环境 sudo apt install gcc-arm-none-eabi 也可以下载可执行文件download 2. ...
随机推荐
- 【mybatis深度历险系列】mybatis中的动态sql
最近一直做项目,博文很长时间没有更新了,今天抽空,学习了一下mybatis,并且总结一下.在前面的博文中,小编主要简单的介绍了mybatis中的输入和输出映射,并且通过demo简单的介绍了输入映射和输 ...
- protobuf中的枚举缺省值应该为UNKNOWN
protobuf中的枚举缺省值应该为UNKNOWN(金庆的专栏)proto3中的枚举值为了与proto2兼容,要求缺省值固定为第1个,值为0.proto2中并没有规定对范围之外的枚举值的处理,而pro ...
- Android下实现手机验证码
Android实现验证码 效果图 Github地址 地址:https://github.com/kongqw/Android-CheckView 使用 <kong.qingwei.demo.kq ...
- Not saving crash log because we have reached the limit for logs to store on disk.解决办法
一.问题简述: Xcode, window>Devices>DEVICES选中自已的设备,打开控制台:提示日志存量已达限制,这个是系统抛出的log."Not saving cra ...
- Android简易实战教程--第三十四话《 自定义SeekBar以及里面的一些小知识》
转载本专栏文章,请注明出处尊重原创:博客地址http://blog.csdn.net/qq_32059827/article/details/52849676:小杨的博客 许多应用可能需要加入进度,例 ...
- java创建对象详解和多态问题
一. java 构造方法不等于创建对象而是初始化对象,new 关键字分配内存和创建对象的. 二.Test test = new Test(); 有人用上面的表达式来说明构造方法返回对象引用,这是明显 ...
- 分布式内存文件系统Tachyon
UCBerkeley研发的Tachyon(超光子['tækiːˌɒn],名字要不要这么太嚣张啊:)是一款为各种集群并发计算框架提供内存数据管理的平台,也可以说是一种内存式的文件系统吧.如下图,它就处于 ...
- Swift中集合类型indexOf(Element)提示错误的解决办法
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 初学Swift,会遇到一些潜在的小问题,比如我们在某个集合对象 ...
- 向Github提交代码时遇到的一些问题
今天分享一下我的一些小经验,那就是向github提交我们的代码.之前一直是直接使用的浏览器完成的代码的下载任务,没有使用过客户端,为了让自己在工作之前熟练使用GitHub,所以就有了下面的这篇博文了. ...
- Android项目开发填坑记-9patchPng报错
如果阅读体验不佳,请使用–> Github版 背景 之前写了一篇文章Android必知必会–NinePatch图片制作详细介绍了Android 9Patch图片的制作和一些Demo展示,这次说明 ...