什么是Android原生开发套件(NDK)?

Nik*_*tel 77 android android-ndk

我想了解NDK.什么是Android NDK(本机开发工具包)?怎么用呢?为什么要使用它?

Ted*_*opp 88

NDK(Native Development Kit)是一个允许您使用C/C++为Android设备编程的工具.它旨在与SDK集成(它被描述为"配套工具"),仅用于项目的性能关键部分.有关更多信息,请参见此处

  • @YoushaAleayoub - 在Android设备上,用Java编写的代码在Java虚拟机中运行,Java虚拟机是一个解释Java字节代码的系统提供的程序.用C/C++编写的代码被编译成直接由CPU运行的机器指令.后一个代码称为"本机"代码,因为它是CPU的本机代码.请注意,不同的CPU需要不同的本机代码指令.因此,当您使用NDK时,您可以选择为单个硬件类型或各种CPU生成代码,所有这些都最终打包在应用程序的.apk文件中. (9认同)

小智 52

NDK可以提高应用程序性能.对于许多处理器绑定的应用程序通常都是如此.许多多媒体应用程序和视频游戏使用本机代码来处理密集型任务.性能改进可以来自三个方面.首先,本机代码被编译为二进制代码并直接在OS上运行,而Java代码被转换为Java字节代码并由Dalvik虚拟机(VM)解释.在Android 2.2或更高版本中,即时(JIT)编译器被添加到Dalvik VM以在程序运行时分析和优化Java字节代码(例如,JIT可以将部分字节代码编译为执行前的二进制代码).但在许多情况下,本机代码仍然比Java代码运行得更快.

Java代码由Android上的Dalvik VM运行.Dalvik VM专为具有受限硬件资源(内存空间,处理器速度等)的系统而设计.

NDK性能改进的第二个来源是本机代码允许开发人员使用Android SDK无法访问的某些处理器功能,例如NEON,单指令多数据(SIMD)技术,允许处理多个数据元素在平行下.一个特定的编码任务示例是视频帧或照片的颜色转换.假设我们要将一个1920x1280像素的照片从RGB色彩空间转换为YCbCr色彩空间.天真的方法是将转换公式应用于每个像素(即超过两百万像素).使用NEON,我们可以一次处理多个像素,以减少处理时间.

第三个方面是我们可以在汇编级别优化关键代码,这是桌面软件开发中的常见做法.

坏处

NDK无法直接访问Android SDK中的大量API,而在NDK中进行开发将始终为您的应用程序带来额外的复杂性.


Chi*_*rag 18

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

这提供了重用现有代码和提高速度的好处.

请点击以下链接.

链接-1

LINK-2

链路3


Hus*_*ain 8

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

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

什么是NDK?

什么时候开发本地代码

NDK下载

如何构建NDK应用程序

如何使用NDK

Android NDK的10个提示