Android JNI error: Call function with boolean argument causes a crash

Android JNI error: Call function with boolean argument causes a crash

我正在尝试调用此 JAVA 函数:

public String getPreferredLanguage(boolean withRegion)

使用 JNI GetMethodID,但我总是崩溃,我在 JNI 部分尝试了很多关于函数签名的变体,但 none 似乎有帮助。

JNI代码:

methodID getPreferredLanguageMethod = env->GetMethodID(languageServiceClass, "getPreferredLanguage", "(Ljava/lang/Boolean;Z)Ljava/lang/String;");
    if (!getPreferredLanguageMethod) {
        TTLOGD("LanguageService::getPreferredLanguage: ERROR getPreferredLanguageMethod is null\n");
    }

崩溃信息:

JNI DETECTED ERROR IN APPLICATION: JNI CallObjectMethodV called with pending exception java.lang.NoSuchMethodError: no non-static method "Lcom/tabtale/mobile/acs/services/LanguageService;.getPreferredLanguage(Ljava/lang/Boolean;Z)Ljava/lang/String;"

知道我做错了什么吗?

在反复阅读 this 文档后,我发现了我的问题,JNI 函数应该是这样的:

jmethodID getPreferredLanguageMethod = env->GetMethodID(languageServiceClass, "getPreferredLanguage", "(Z)Ljava/lang/String;");