什么是Android NDK(本机开发套件)?如何使用它?为什么要使用它?
什么是Android NDK(本机开发套件)?如何使用它?为什么要使用它?
Answers:
NDK(本机开发套件)是一种工具,可让您使用C / C ++为Android设备编程。它旨在与SDK集成(被称为“配套工具”),并且仅用于项目的性能至关重要的部分。有关更多信息,请参见此处。
NDK可以提高应用程序性能。对于许多处理器绑定的应用程序通常都是这样。许多多媒体应用程序和视频游戏将本机代码用于处理器密集型任务。性能改进可以来自三个方面。首先,将本机代码编译为二进制代码并直接在OS上运行,而将Java代码转换为Java字节代码并由Dalvik虚拟机(VM)解释。在Android 2.2或更高版本上,Dalvik VM中添加了即时(JIT)编译器,以在程序运行时分析和优化Java字节码(例如,JIT可以将一部分字节码编译为执行之前的二进制代码)。但是在许多情况下,本机代码仍然比Java代码运行得更快。
Java代码由Android上的Dalvik VM运行。Dalvik VM专为硬件资源(内存空间,处理器速度等)受限的系统而设计。
NDK性能改进的第二个来源是,本机代码允许开发人员利用Android SDK无法访问的某些处理器功能,例如NEON(单指令多数据(SIMD)技术),允许处理多个数据元素在平行下。一个特定的编码任务示例是视频帧或照片的颜色转换。假设我们要将1920x1280像素的照片从RGB颜色空间转换为YCbCr颜色空间。天真的方法是将转换公式应用于每个像素(即超过200万像素)。使用NEON,我们可以一次处理多个像素,以减少处理时间。
第三方面是我们可以在汇编级别优化关键代码,这是台式机软件开发中的常见做法。
坏处
NDK无法直接访问Android SDK中提供的许多API,并且使用NDK开发总是会给您的应用程序带来额外的复杂性。
在Android的NDK是一个配套工具的Android的SDK,让你建立本地代码您的应用程序的性能关键部分。它提供了标头和库,使您可以在使用C或C ++进行编程时构建活动,处理用户输入,使用硬件传感器,访问应用程序资源等。如果您编写本机代码,则您的应用程序仍将打包到一个.apk文件中,并且它们仍将在设备上的虚拟机内部运行。基本的Android应用程序模型不变。
以下链接也回答了您的问题:
Android NDK是一个工具集,可让您在Android应用程序中嵌入使用本机代码的组件。
Android应用程序在Dalvik虚拟机中运行。NDK允许您使用本机代码语言(例如C和C ++)实现应用程序的某些部分。这可以以重复使用现有代码的形式,并在某些情况下提高速度,从而为某些类型的应用程序带来好处。
来源:http://developer.android.com/sdk/ndk/overview.html
Android NDK是Android SDK的配套工具,可让您使用本机代码构建应用程序中性能至关重要的部分。它提供了标头和库,使您可以在使用C或C ++进行编程时构建活动,处理用户输入,使用硬件传感器,访问应用程序资源等。如果您编写本机代码,则您的应用程序仍将打包到一个.apk文件中,并且它们仍将在设备上的虚拟机内部运行。基本的Android应用程序模型不变。
NDK只是一组工具,可让您为应用程序编写C / C ++代码,例如,假设要向应用程序添加关键功能/性能,并且要先用C / C ++编写,然后用eclipse或其他方法编写IDE不允许您编写C / C ++,在这种情况下,您必须使用NDK并将其集成到您的应用程序中。
NDK是一个工具集,可让您使用诸如C和C ++之类的本机代码语言来实现应用程序的各个部分....请查看此https://developer.android.com/tools/sdk/ndk/index.html
Android NDK(本机开发套件)
Android Native Development Kit(NDK)是开发人员使用C / C ++编写的代码,可编译为本机代码
为什么要使用它?
将源代码直接编译成CPU的机器代码(而不是像Java那样编译成中间语言),这样开发人员便能够获得最佳性能。
如何使用它?
这里最好的教程
https://developer.android.com/ndk/index.html
https://www.androidauthority.com/android-ndk-everything-need-know-677642/
https://www.ntu.edu.sg/home/ehchua/programming/android/Android_NDK.html