Android JNI错误:调用带有布尔参数的函数会导致崩溃

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

本文关键字:函数 崩溃 参数 布尔 错误 JNI 调用 Android      更新时间:2023-10-16

我正在尝试调用这个JAVA函数:

public String getPreferredLanguage(boolean withRegion)

JNI GetMethodID,但我总是得到一个崩溃,我尝试了很多关于JNI部分的函数签名的变化,但似乎没有帮助。

JNI代码:

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

崩溃消息:

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;"

知道我做错了什么吗?

在一遍又一遍地阅读本文档后,我发现了我的问题,这就是JNI函数应该是:

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