android-ndk - 如何从 native android 可执行文件获取对 JVM 的引用?

标签 android-ndk

我已经使用 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/

相关文章:

Android gradle 实验性插件路线图

java - 使用Android NDK自定义SQLite,SQLite源码

android - 如何在android中将自定义过滤器应用于相机流?

android - ndk-build .so 不兼容的目标(预建共享库)

c++ - 从调用堆栈中获取函数名

android - 压缩/解压缩内存中的数据

android - Android NDK 部分不支持计时

android - Galaxy Nexus - 安装时选择了错误的 CPU ABI

Android磁力计采样率改进/抖动减少

android - x264 构建错误 - Android