GetStaticMethodID中的JNI错误(java_class == null)

时间:2019-02-08 00:20:37

标签: android java-native-interface release

好吧,我正在尝试开发Android应用程序,最近我从GitHub添加了一个库。当我在调试中运行该应用程序时,它工作正常,但是当我发布时,该应用程序崩溃并且出现下一个错误:

A/zygote64: java_vm_ext.cc:504] JNI DETECTED ERROR IN APPLICATION: java_class == null
A/zygote64: java_vm_ext.cc:504]     in call to GetStaticMethodID
[...]
A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 26017

代码是:

JNIEXPORT void JNICALL Java_somepackage_StarterModel_Detector_initiate(JNIEnv *JNI, jclass SelfClass,
                                                                jobject Context) {
if (NULL == State) {
    StateStructure *Blank = (StateStructure *) malloc(sizeof(StateStructure));
    Blank->JNI = JNI;
    Blank->Context = (*JNI)->NewGlobalRef(JNI, Context);
    Blank->AlarmClass = (*JNI)->FindClass(JNI, "com/laifadventure/laifbusiness/StarterModel/Alarm");
    Blank->AlarmClass = (*JNI)->NewGlobalRef(JNI, Blank->AlarmClass);
    Blank->AlarmCall = (*JNI)->GetStaticMethodID(JNI, Blank->AlarmClass, "call",
                                                 "(Landroid/content/Context;)V");
    InitiateBuffer(Blank);
    InitiateSamples(Blank);
    InitiateResampling(Blank);
    InitiateFiltering(Blank);
    InitiateDeltas(Blank);
    InitiateSV(Blank);
    InitiateEvents(Blank);
    InitiateProtection(Blank);
    InitiateSensor(Blank);
    State = Blank;
}
}

为什么只在发行版中发生?如何解决?

解决方案

我终于设法找到了问题。在我的gradle文件中,我在发布配置中将参数“ minifyEnabled”设置为true。 通过禁用此参数,我的应用程序开始按预期运行。

0 个答案:

没有答案