JNI 不同版本
ID可以缓存
static jfieldID jfieldContext;
typedef union {
JNIEnv* env;
void* venv;
} UnionJNIEnvToVoid;
jint JNI_OnLoad(JavaVM* vm, void* reserved) {
UnionJNIEnvToVoid uenv;
JNIEnv* env;
jclass clazz;
jint result = -1;
LOGI("Media Tag: JNI OnLoad\n");
#ifdef JNI_VERSION_1_6
if (result==-1 && vm->GetEnv((void**) &uenv.venv, JNI_VERSION_1_6) == JNI_OK) {
LOGI("JNI_OnLoad: JNI_VERSION_1_6\n");
result = JNI_VERSION_1_6;
}
#endif
#ifdef JNI_VERSION_1_4
if (result==-1 && vm->GetEnv((void**) &uenv.venv, JNI_VERSION_1_4) == JNI_OK) {
LOGI("JNI_OnLoad: JNI_VERSION_1_4\n");
result = JNI_VERSION_1_4;
}
#endif
#ifdef JNI_VERSION_1_2
if (result==-1 && vm->GetEnv((void**) &uenv.venv, JNI_VERSION_1_2) == JNI_OK) {
LOGI("JNI_OnLoad: JNI_VERSION_1_2\n");
result = JNI_VERSION_1_2;
}
#endif
if(result == -1 || !(env = uenv.env)
|| !(clazz = env->FindClass("com/sds/android/ttpod/media/MediaTag"))
|| !(jfieldContext = env->GetFieldID(clazz, "mNativeContext", "I"))) {
return JNI_FALSE;
}
return result;
}

浙公网安备 33010602011771号