本机代码作为单独的进程与 JNI

jus*_*ing 5 java-native-interface android android-ndk

我当前的项目涉及一个带有一些现有本机代码的 Android 应用程序。据我所知,我可以将代码用作单独的二进制文件,它将在单独的进程中运行,也可以通过 JNI 使用,从而允许更简单的通信。

JNI 通常应该比 over 方法更受欢迎吗?本机代码(编写为编译成 UNIX 二进制文件)确实依赖于持续的性能。它根本不应该受到其他代码(例如 Android 视图、活动、进程、线程...)的影响,至少在理论上是这样。实际上,我们的目标是尽可能保持其性能。JNI 会不会导致性能问题,尤其是在通信开销和 VM 线程方面?

分离的二进制文件具有以下优点 - 易于维护 - 无需更改现有的本机代码库(当然,兼容性更改除外) - 运行分离的二进制文件的进程可能不太容易受到性能影响比单进程 JNI 解决方案的影响更大。