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;");
我正在尝试调用此 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;");