我今天一直在浏览一些应用程序(实际上是在查看有多少使用ACRA),但注意到很多应用程序使用NDK。我已经开发了很长一段时间的应用程序并且尚未找到对NDK的需求,并且根据Android Developer site你不应该真正使用它,除非你需要:
一般情况下,如果NDK对您的应用程序至关重要,您应该只使用NDK,因为您只是喜欢用C / C ++编程。
所以这让我思考......我错过了什么吗?我的意思是这里只是使用NDK的一些应用程序,我真的不需要它:
我想我的想法可能是他们在其他平台上使用相同的代码,用C语言编写并在iOS,Android和&其他平台,但我不相信这就是原因。这些应用程序可能使用NDK还有其他任何东西吗?我想其他的可能是:许可,隐私/安全(移动复杂的逆向工程),设备ID,游戏引擎等。
无论如何,问题是,你有没有想过为什么这么多应用程序使用NDK?
答案 0 :(得分:8)
不确定这个问题是否适用于StackOveflow,但作为使用NDK的开发人员,我可以从我的角度给出两个理由:
C ++中非常大的代码库,也用于iPhone和Winrt上的版本,以及Windows CE / Desktop。它是开发人员多年,经过修复,经过大量用户的测试。
黑客更难了解您的代码正在做什么,并打破它。但并非不可能。
答案 1 :(得分:3)
我想marcin列出的第一个原因是主要原因。
就我而言,由于iPhone已经使用了多个C ++库,并且他们不想将它们移植到java impl,所以只需继续在Android中使用它。
因为我是Android开发人员,所以我完全不同意这种方式。正如你所强调的那样,从官方文件中可以看出:
一般情况下,只有在必要时才应使用NDK 到你的应用程序 - 永远不要因为你只是喜欢用C / C ++编程。
但是,很难将整个解决方案推向java ...在调试,故障排除方面很痛苦,任何事情都失去控制。