什么是Android Native Development Kit(NDK)?


Answers:


93

NDK(本机开发套件)是一种工具,可让您使用C / C ++为Android设备编程。它旨在与SDK集成(被称为“配套工具”),并且仅用于项目的性能至关重要的部分。有关更多信息,请参见此处


11
@YoushaAleayoub-在Android设备上,用Java编写的代码在Java虚拟机中运行,Java虚拟机是系统提供的解释Java字节码的程序。用C / C ++编写的代码被编译成直接由CPU运行的机器指令。后面的代码称为“本机”代码,因为它是CPU固有的。请注意,不同的CPU需要不同的本机代码指令。因此,当您使用NDK时,可以选择为单个硬件类型或为多个CPU生成代码,所有代码最终都打包在应用程序的.apk文件中。
泰德·霍普

因此,如果我想在Android上使用OpenCV,最好使用它的C ++版本吗?
user8663682

@ user8663682-我建议使用Android版本。它仍然需要使用NDK,但是将功能公开给Android应用程序的所有工作已经完成。
泰德·霍普

56

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开发总是会给您的应用程序带来额外的复杂性。


19

Android NDK是仅与Android SDK结合使用的配套工具,允许应用程序开发人员使用本机(C / C ++)代码构建其应用程序的性能关键部分。

这以重用现有代码和提高速度的形式提供了好处。

请通过以下链接。

链接1

链接2

链接3


8

Android的NDK是一个配套工具的Android的SDK,让你建立本地代码您的应用程序的性能关键部分。它提供了标头和,使您可以在使用C或C ++进行编程时构建活动,处理用户输入,使用硬件传感器,访问应用程序资源等。如果您编写本机代码,则您的应用程序仍将打包到一个.apk文件中,并且它们仍将在设备上的虚拟机内部运行。基本的Android应用程序模型不变​​。

以下链接也回答了您的问题:

什么是NDK?

何时使用本机代码进行开发

NDK下载

如何构建NDK应用

如何使用NDK

Android NDK的10个技巧


3

Android NDK是一个工具集,可让您在Android应用程序中嵌入使用本机代码的组件。

Android应用程序在Dalvik虚拟机中运行。NDK允许您使用本机代码语言(例如C和C ++)实现应用程序的某些部分。这可以以重复使用现有代码的形式,并在某些情况下提高速度,从而为某些类型的应用程序带来好处。

来源:http//developer.android.com/sdk/ndk/overview.html

Android NDK是Android SDK的配套工具,可让您使用本机代码构建应用程序中性能至关重要的部分。它提供了标头和库,使您可以在使用C或C ++进行编程时构建活动,处理用户输入,使用硬件传感器,访问应用程序资源等。如果您编写本机代码,则您的应用程序仍将打包到一个.apk文件中,并且它们仍将在设备上的虚拟机内部运行。基本的Android应用程序模型不变​​。

来源:http//developer.android.com/sdk/ndk/index.html


3

NDK只是一组工具,可让您为应用程序编写C / C ++代码,例如,假设要向应用程序添加关键功能/性能,并且要先用C / C ++编写,然后用eclipse或其他方法编写IDE不允许您编写C / C ++,在这种情况下,您必须使用NDK并将其集成到您的应用程序中。



2

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.