android ndk vs sdk - 如果涉及到功能

hen*_*rix 18 android android-ndk

我即将开始Android应用程序开发.

什么是NDK?文档我无法提取以下信息:

使用NDK实际上是否会引入与SDK相比的新功能?

我对此感兴趣,因为使用NDK会大大增加应用程序的复杂性,所以如果我对性能提升不感兴趣,还有其他理由去NDK吗?

我的意思是例如:

-restart电话

  • (我知道SDK或NDK都不允许这样,我只是用它作为我的意思的例子)让我们说java SDK不允许这样,但是一些原生库做 - 然后回答我的问题是肯定的,NDK确实添加了一些功能

提前填写任何有用的答案.

Ale*_*qui 17

你真的应该使用SDK,除非你有充分的理由使用NDK.好的理由可能会有所不同,但例如,您可以使用NDK:

  • 如果你想使用OpenGL ES 2.0 for Android 2.1(Eclair),它只能通过NDK使用.对OpenGL ES 2.0的SDK支持始于Froyo版本.

  • 如果要使用Renderscript

  • 如果您的应用程序逻辑的很大一部分是用C/C++编写的


Mig*_*uel 13

NDK在功能方面受到更多限制.

您从NDK获得的是能够用C++编写应用程序并将其编译为本机ARM代码的能力.如果您比C++更喜欢C++,如果您想要移植到Android的现有C++应用程序,或者您只需要本机代码可以提供的额外性能,那么无论如何都应该使用NDK.

我自己没有这样做,但另一种选择是编写混合应用程序,其中应用程序主要使用Java编写,选择的函数用C++编写,从Java代码调用.

  • 很抱歉在这个问题的后期发表评论,但我只是想确保用C++编写,因为你更喜欢它并不是使用NDK的好理由. (4认同)
  • @CorayThan都不是; 用C++编写纯粹是因为你不想用Java编写是一个不好的理由.如NDK下载页面所述,"在下载NDK之前,您应该了解NDK不会使大多数应用程序受益.作为开发人员,您需要平衡其优势与其缺点.值得注意的是,在Android上使用本机代码通常不会导致显着的性能提升,但它总是会增加您的应用程序复杂性.一般来说,如果它对您的应用程序至关重要,您应该只使用NDK,因为您只是喜欢用C/C++编程." (2认同)

Kur*_*aum 9

据我所知,使用NDK的唯一原因是从应用程序中挤出额外的性能并接近裸机.如果你不需要做这些事情,你应该远离NDK.

另请注意,Dalvik VM已经具有一些非常棒的性能并且相对简单.


Val*_*ynk 9

对我来说,我认为了解NDK是非常重要的,它是移动应用程序开发中的强大工具.特别是如果你想开发一个多平台应用程序,NDK在这个领域是无与伦比的.由于使用C++ for Android编写的相同代码可以在iOS,Windows或任何其他平台上轻松移植和运行,而无需更改原始代码.这实际上节省了大量时间用于开发在多个平台上运行的应用程序; 作为游戏和其他经典应用程序.你无法使用SDK.