什么是Android NDK(原生开发套件)?怎么用呢?为什么要使用它?
答案 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 ++)代码构建其应用程序的性能关键部分。
这提供了重用现有代码和提高速度的好处。
请浏览以下链接。
答案 3 :(得分:8)
Android NDK 是 Android SDK 的配套工具,可让您使用本机代码构建应用的性能关键部分。它提供了标题和库,允许您在 C或C ++ 中编程时构建活动,处理用户输入,使用硬件传感器,访问应用程序资源等。如果您编写本机代码,您的应用程序仍然打包成.apk文件,它们仍然在设备上的虚拟机内运行。基本的Android应用程序模型不会改变。
以下链接也回答了您的问题:
答案 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的基础 应用程序模型不会改变。
答案 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