我试图理解为什么有人想在 android 编程中使用 NDK 功能?c++ 对 Android 来说真的很重要吗?
问问题
394 次
2 回答
4
三个(也许是第四个)主要原因是:
- 性能。对于一些关键的内部循环,C/C++ 相对于 Java 的边际性能优势,尤其是在 Android 编译器中提供即时编译 (JIT) 之前,可能是一个决定性因素。
- 使用现有的 C/C++ 库。这里的推理很明显。
- 做一些 NDK 允许 Java API 无法管理的事情。接近硬件的低级操作,尤其是接触制造商特定的硬件,可能只能通过 C/C++ 实现
- 正如 Yojimbo 建议的那样,混淆。逆向工程编译的机器代码比 Java 字节码要困难一些,尽管你永远不应该依靠默默无闻来指望安全性。
说了这么多,在决定使用它之前,您应该非常确定您需要 NDK。NDK 代码的测试和维护成本可能高于同等 Java。
于 2013-07-31T19:38:11.890 回答
1
我已经多次使用 NDK,用于:
- 利用现有的 C 库。
- 跨不使用 Java 的平台(例如 iOS)共享代码。
NDK 对性能没有那么有用,因为 Android 应用程序通常不受 CPU 限制,而是等待网络或文件访问。这就是为什么谷歌说:
在 Android 上使用本机代码通常不会带来显着的性能提升,但它总是会增加应用程序的复杂性。
于 2013-07-31T19:46:08.663 回答