Nik*_*tel 77 android android-ndk
我想了解NDK.什么是Android NDK(本机开发工具包)?怎么用呢?为什么要使用它?
Ted*_*opp 88
NDK(Native Development Kit)是一个允许您使用C/C++为Android设备编程的工具.它旨在与SDK集成(它被描述为"配套工具"),仅用于项目的性能关键部分.有关更多信息,请参见此处
小智 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中进行开发将始终为您的应用程序带来额外的复杂性.
在Android的NDK是一个配套工具的Android的SDK,让你建立你的应用程序的性能关键部分在本地代码.它提供了标头和库,允许您在使用C或C++编程时构建活动,处理用户输入,使用硬件传感器,访问应用程序资源等.如果您编写本机代码,您的应用程序仍然打包成.apk文件,它们仍然在设备上的虚拟机内运行.基本的Android应用程序模型不会改变.
以下链接也回答了您的问题:
归档时间: |
|
查看次数: |
77669 次 |
最近记录: |