【发布时间】:2017-04-07 06:36:42
【问题描述】:
我正在开发一个 Android 应用程序,它使用 OpenCV 来执行一些密集的计算机视觉操作。在这一点上,我想知道如果我用 C/C++ 而不是 Java 进行视觉处理,是否可以获得更好的性能。该应用程序的其余部分是使用 Android Studio 用 Java 编写的。
我对如何在 Android 设备上编译和运行 C/C++ 代码感到困惑。由于 Java 应用程序在 Android 平台上的 JVM 上运行,因此我不太了解如何为 JVM 编译 C/C++ 代码以及该代码如何运行。
我在想如果 C/C++ 代码被编译成可以在 JVM 中运行,那么使用它有什么意义,因为它仍在 VM 中运行,而不是直接针对设备 CPU?
【问题讨论】:
-
了解 Android NDK - 它允许在 android 中使用 C/C++ 代码
-
C++ 代码原生运行。
-
没有为 VM 编译 C++ 代码。它针对目标设备的 CPU 架构(通常为 ARMv7-a 或 ARMv8-a)进行编译。然后,您的应用程序的 Java 部分和本机部分可以通过 Java 本机接口 (JNI) 进行交互。