我已经使用 NDK 成功构建并运行了 native 可执行文件。它是一个没有 java 入口点的常规 C++ 应用程序(例如,没有 xyz_activity,只有 int main())。现在我需要通过 JNI 从 android 运行时访问一些方法,但我似乎无法掌握 JavaVM*。 NDK 不导出 jni_getcreatedjavavms,AndroidRuntime::getJavaVM() 也不导出。这样我就只剩下 JNI_OnLoad 了,它只为共享库调用。我已经尝试将项目拆分为一个可执行文件和一个包含 JNI_OnLoad 的 .so 文件,但我猜这仅在执行显式 System.loadLibrary 调用时才有效。但是,该项目根本不包含任何 Java 代码。我如何获得对 JVM 的引用?
最佳答案
如回答here您可以使用 jni 环境 (JNIEnv) 访问 JVM:
JavaVM* jvm;
int gotVM = (*jniENV).GetJavaVM(&jvm);
关于android-ndk - 如何从 native android 可执行文件获取对 JVM 的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37932946/