Android NDK的实用目的是什么?

时间:2013-07-31 19:35:40

标签: android

我试图理解为什么有人想在Android编程中使用NDK功能? c ++对于学习Android非常重要吗?

2 个答案:

答案 0 :(得分:3)

三个(也许是第四个)主要原因是:

  • 效果即可。对于一些关键的内部循环,C / C ++相对于Java的边际性能优势,尤其是在Android编译器中提供的即时编译(JIT)之前,可能是一个决定性因素。
  • 使用现有的C / C ++库。这里的推理非常明显。
  • 执行NDK允许Java API无法管理的内容。靠近硬件的低级操作,特别是触摸制造商专用硬件,可能只能通过C / C ++
  • 实现
  • 正如Yojimbo所说,混淆。对Java编码的机器代码进行逆向工程比使用Java字节代码要困难得多,尽管你绝对不应该依赖于安全性。

说了这么多,你应该确定在决定使用它之前需要NDK。 NDK代码的测试和维护成本可能高于等效的Java。

答案 1 :(得分:1)

我曾多次使用过NDK:

  • 利用现有的C库。
  • 跨平台(例如iOS)共享不使用Java的代码。

NDK对性能没有用,因为Android应用程序通常不受CPU限制,而是等待网络或文件访问。这就是Google says

的原因
  

在Android上使用本机代码通常不会带来显着的性能提升,但它总是会增加应用程序的复杂性。