Android下NDK开发环境搭建

摘要:
Android下NDK开发环境搭建1.AndroidNDK安装与配置1.1NDK简介AndroidNDK是一套允许开发人员使用本地代码进行AndroidAPP部分功能开发的工具,通过这个工具,我们可以把用C/C++代码编译成可以直接运行在Android平台上的本地代码,这些本地代码以动态链接库的形式存在,也正因为这样,我们可以通过复用这些动态链接库从而复用本地代码。众所周知,Android应用程序是运行在Dalvik虚拟机上的。

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

Android下NDK开发环境搭建第1张

图1

可以看出现在的目标平台都有32和64位之分。

1.3 NDK安装

直接把下载的安装包解压到我们想要放的路径下即可,我这里是把加压后的android-ndk-r10b(此目录下就有ndk-build.cmd编译工具)放在D:ADT bundle目录下。

1.4 NDK环境配置

配置环境变量,把ndk-build.cmd所在的位置D:ADT bundleandroid-ndk-r10b添加系统变量Path的添加此路径信息,如下图:

Android下NDK开发环境搭建第2张

图2

1.5 NDK的安装验证

完成上面的步骤之后,NDK的安装到此就完成了,下面我们来验证一下NDK安装成功与否. 打开cmd.exe,在里面输入ndk-build -version,输出以下内容,表示安装成功。

Android下NDK开发环境搭建第3张

图3

1.6 NDK编译程序

现在我们用安装好的NDK来编译一个NDK提供的sample程序hello-jni(我的目录位于:D:ADT-bundleandroid-ndk-r10bsampleshello-jni)。

(1)进入hello-jni目录下。

(2)直接输入命令ndk-build编译本地代码,输出以下内容,表示成功编译生成动态链接库,同时我们在hello-jniobjlocalarmeabi路径下可以看到编译好的libhello-jni.so。

Android下NDK开发环境搭建第4张

图4

1.7 验证hello-jni

(1)在Eclipse,选择File--->New--->Project,如下图:

Android下NDK开发环境搭建第5张

图5

选择Android--->Android Project from ExistingCode,然后选择Next,如下图:

Android下NDK开发环境搭建第6张

图6

Root Directory选择hello-jni目录,且选择Finish。在这之前记得是要先编译hello-jni且成功so文件。

(2)打开AVD,然后选择Run--->Run As--->Android Application,运行界面如下图所示:

Android下NDK开发环境搭建第7张

图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,如下图:

Android下NDK开发环境搭建第8张

图8

3.Eclipse中使用NDK

3.1 NDK配置

打开Eclipse,点Window->Preferences->Android->NDK,设置NDK路径,例如我的是:D:ADT-bundleandroid-ndk-r10b

Android下NDK开发环境搭建第9张

图9

验证NDK配置是否OK可以导入一个现有的工程来验证,如1.7节描述,也可以通过新建Android工程。

3.2 CDT验证

在Eclispe中新建一个项目,如果出现了C/C++项目,则表明CDT插件安装成功了,选择File--->New--->Project,如下图:

Android下NDK开发环境搭建第10张

图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开发环境搭建》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇页面图片懒加载、延迟加载(lazyload)第一篇-ubuntu18.04访问共享文件夹下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

android学习和广告平台赚钱

[原创] android学习和广告平台赚钱 - Java,Android,Android学习,Android赚钱,广告平台 - mobile - ITeye论坛 前言: 2011年11月份我开始学习android软件开发(本人有良好的java基础、web开发基础、c++基础),2011年12月份开始开发第一款手机软件(软件名字就不透露了),2012年1...

Android 数据库升级解决方案

请考虑如下情况: 在数据库升级时,不同版本的数据库,他们定义的表结构完全可能是不一样的,比如V1.0的表A有10个column,而在V1.1的表A有12个colum,在升级时,表A增加了两列,此时我们应该怎么做呢。 总体思路 1,将表A重命名,改了A_temp。 2,创建新表A。 3,将表A_temp的数据插入到表A。 下面代码列出了更新表的实现,upg...

Android 线程操作之AsyncTask

AsyncTask和Handler对比1 ) AsyncTask实现的原理,和适用的优缺点AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程.使用的优点:l 简单,快捷l 过程可控使用的缺点:l 在使用...

客户端软件GUI开发技术漫谈:原生与跨平台解决方案分析

原生开发应用开发 Microsoft阵营的 Winform WinForm是·Net开发平台中对Windows Form的一种称谓。 如果你想深入的美化UI,需要耗费很大的力气,对于目前主流的CSS样式表来讲,美化Winform的界面以及自定义控件是需要耗费更多的时间的。 WPF 基于XML+C#+CSS的呈现方式让它在UI上有了更加灵活的设计宽度 WPF...

用PHP编写Android应用程序 狼人:

Google的开源Android移动操作系统正在席卷全球智能手机市场,和苹果不一样,它对那些想将应用程序提交到iPhone App Store的开发人员有着严格的指导方针和要求,Google的Android平台非常开放,甚至还可以用PHP编写Android应用程序,Irontech创建了一个运行在Android上的PHP移植程序,结合Android的脚本层...

Android Studio的串口通讯开发

基于android-serialport-api实现 前言RS232标准接口UARTRS232与UART转接下载 NDK 和构建工具创建支持 C/C++ 的新项目编译C/C++代码串口通讯原理关于校验位HexString与Bytes的转换参考 前言 软件代码写久了,总会对嵌入式开发感兴趣,因为软件的东西写来写去看不见摸不着,而嵌入式硬件开发,可以捣...