从r6更新到r7后,Android NDK找不到JNI_GetCreatedJavaVMs

giv*_*ivi 3 java java-native-interface android android-ndk

我已将NDK版本从r6更新为r7。之后,在编译本机文件之一时出现此错误:

错误:未在此范围内声明“ JNI_GetCreatedJavaVMs”

我正在为API级别8(Android 2.2)构建项目。我已经检查了

(MY_NDK_PATH_R6)/android-8/arch-arm/usr/include/jni.h

GetCreatedJavaVMs声明和文件jni.h实际上是一个符号链接

(MY_NDK_PATH_R6)/platforms/android-3/arch-arm/usr/include/jni.h

然后我检查了

(MY_NDK_PATH_R7)/平台/android-8/arch-arm/usr/include/jni.h

它实际上是一个文件,而不是符号链接。

我正在使用Eclipse构建项目,而我在首选项中唯一指定的内容是的路径ndk-build

编辑:好的,现在很清楚为什么找不到GetCreatedJavaVMs:

/*
 * VM initialization functions.
 *
 * Note these are the only symbols exported for JNI by the VM.
 */
#if 0  /* In practice, these are not exported by the NDK so don't declare them */
jint JNI_GetDefaultJavaVMInitArgs(void*);
jint JNI_CreateJavaVM(JavaVM**, JNIEnv**, void*);
jint JNI_GetCreatedJavaVMs(JavaVM**, jsize, jsize*);
#endif
Run Code Online (Sandbox Code Playgroud)

但是在这种情况下我应该如何获得VM?

giv*_*ivi 5

我找到了解决方案。您只需要实现JNI_OnLoad(JavaVM * vm,void * reserved)函数。JVM是一个参数。可能这是获取JVM的更好方法。