大多数应用程序不会受益于使用 NDK。作为开发者,您需要权衡其优点和缺点;特别是,使用本地代码并不能自动增加性能,而总是会增加应用程序的复杂性。通常情况下,只有在本地代码对应用程序至关重要时,才应该使用本地代码,而不仅仅是因为您喜欢使用 C/C++ 进行编程。
最适合使用 NDK 的典型候选项是那些不分配太多内存的自包含的 CPU 密集型操作,例如信号处理、物理模拟等。仅仅把一个方法改写成 C 语言通常不会带来很大的性能提升。在决定是否应该使用本地代码时,请考虑您的需求,并查看 Android 框架 APIs 是否提供了您所需的功能。然而,NDK 可以是重用大量现有的 C/C++ 代码的有效方式。
安卓系统底层是Linux,因此您可以在其上运行任何语言。我曾经在安卓手机上运行过Perl脚本,仅出于兴趣而已。从实际的应用开发角度来看,谷歌对Java的实现运行在Dalvik上将是典型的选择。
Java始终允许您调用“本地代码”组件。然而,如果可能的话,应避免使用它们,因为它们可能会在您的代码中引入微妙的错误和平台依赖性。
我认为您不能完全使用C/C++编写Android应用程序 -- 至少必须有一个Java包装器。
这是一个好问题,据我所知,当您真正想要编写一些核心dalvik功能而不是使用Android API时,c或c ++就会出现在画面中,就像您所提出的问题一样,比如与传感器相关的功能或硬件。
如果您想使用API构建应用程序,则大多数情况下将使用Java/XML。
对于像计算机图形应用程序、游戏、模拟、人工智能/专家系统、数字图像处理或计算机视觉等需要大量CPU的应用程序,建议使用C/C++。如果您正在构建一个仅涉及数据(JSON、XML)及其表示或小型图形应用程序(棋盘游戏、90年代的复古游戏),那么JAVA就足够了。