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

时间:2011-07-12 07:08:09

标签: android android-ndk

什么是Android NDK(原生开发套件)?怎么用呢?为什么要使用它?

8 个答案:

答案 0 :(得分:82)

NDK(Native Development Kit)是一个允许您使用C / C ++为Android设备编程的工具。它旨在与SDK集成(它被描述为“配套工具”),仅用于项目的性能关键部分。有关详细信息,请参阅here

答案 1 :(得分:49)

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中开发将始终带来额外的复杂性 进入你的申请。

答案 2 :(得分:18)

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

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

请浏览以下链接。

Link-1

Link-2

Link-3

答案 3 :(得分:8)

  

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

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

What is NDK?

When to Develop in Native Code

NDK Download

How to build NDK app

how to work with NDK

10 tips for Android NDK

答案 4 :(得分: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

答案 5 :(得分:2)

NDK是一个工具集,允许您使用C和C ++等本机代码语言实现应用程序的各个部分....查看此https://developer.android.com/tools/sdk/ndk/index.html

答案 6 :(得分:2)

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

答案 7 :(得分:2)

  

Android NDK(原生开发套件)

Android原生开发工具包(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