Return CallStaticBooleanMethodV 类型与 Java 方法签名不匹配 - 从 C/C++ 调用 Java 方法

Return type of CallStaticBooleanMethodV does not match Java method signature - Calling Java method from C/C++

我的 java 方法签名是 -

public static void JRequestRender()

并在 C/C++

void RequestRender()
{
    ...........
    ...........
    jclass cls = env->GetObjectClass(g_JNIWrapperObj);
    jmethodID mid = NULL;
    if(cls) {
        mid = env->GetStaticMethodID(cls, "JRequestRender", "()V");
    }
    if(mid)
        env->CallStaticBooleanMethod(cls, mid);
    env->DeleteLocalRef(cls);
    .....................
}

这适用于除 Lollipop 之外的所有 Android 版本。 Lollipop 的错误日志是:

art/runtime/check_jni.cc:65] JNI DETECTED ERROR IN APPLICATION: the return type of CallStaticBooleanMethodV does not match void com.foo.bar.MyJniWrapper.JRequestRender()
..........................................
.............................................

JRequestRender returns 无效,不是布尔值。您需要使用 CallStaticVoidMethod。