为什么这么多Android应用使用NDK?

时间:2014-01-03 18:07:06

标签: android android-ndk

我今天一直在浏览一些应用程序(实际上是在查看有多少使用ACRA),但注意到很多应用程序使用NDK。我已经开发了很长一段时间的应用程序并且尚未找到对NDK的需求,并且根据Android Developer site你不应该真正使用它,除非你需要:

  

一般情况下,如果NDK对您的应用程序至关重要,您应该只使用NDK,因为您只是喜欢用C / C ++编程。

所以这让我思考......我错过了什么吗?我的意思是这里只是使用NDK的一些应用程序,我真的不需要它:

  • WhatsApp的
  • TuneIn Radio Pro
  • TextPlus都能
  • Microsoft Tag
  • 星图
  • SPYMouse
  • SoundHound
  • 滚入洞里
  • Skype(可能加密图书馆)
  • Raging Thunder
  • QR Droid
  • PocketCloud
  • Camera Zoom FX
  • Blow Up
  • 纸质相机
  • 海洋高清屏幕保护程序
  • Office套件
  • Instagram的
  • 跳转桌面
  • 炮塔防御
  • 愤怒的小鸟应用

我想我的想法可能是他们在其他平台上使用相同的代码,用C语言编写并在iOS,Android和&其他平台,但我不相信这就是原因。这些应用程序可能使用NDK还有其他任何东西吗?我想其他的可能是:许可,隐私/安全(移动复杂的逆向工程),设备ID,游戏引擎等。

无论如何,问题是,你有没有想过为什么这么多应用程序使用NDK?

2 个答案:

答案 0 :(得分:8)

不确定这个问题是否适用于StackOveflow,但作为使用NDK的开发人员,我可以从我的角度给出两个理由:

  • C ++中非常大的代码库,也用于iPhone和Winrt上的版本,以及Windows CE / Desktop。它是开发人员多年,经过修复,经过大量用户的测试。

  • 黑客更难了解您的代码正在做什么,并打破它。但并非不可能。

答案 1 :(得分:3)

我想marcin列出的第一个原因是主要原因。

就我而言,由于iPhone已经使用了多个C ++库,并且他们不想将它们移植到java impl,所以只需继续在Android中使用它。

因为我是Android开发人员,所以我完全不同意这种方式。正如你所强调的那样,从官方文件中可以看出:

  

一般情况下,只有在必要时才应使用NDK       到你的应用程序 - 永远不要因为你只是喜欢用C / C ++编程。

但是,很难将整个解决方案推向java ...在调试,故障排除方面很痛苦,任何事情都失去控制。