好吧,我正在尝试开发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。 通过禁用此参数,我的应用程序开始按预期运行。