Я обнаружил проблему с приложением для Android.
Моя проблема заключается в том, что при открытии приложения происходит сбой, приводящий к NoClassDefFoundError.Это трассировка стека:
09-24 19:37:14.542 32545-32545/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: it.bcv.invadelite, PID: 32545
java.lang.NoClassDefFoundError: com.electronwill.nightconfig.core.file.FormatDetector$$Lambda$0
at com.electronwill.nightconfig.core.file.FormatDetector.registerExtension(FormatDetector.java:27)
at com.electronwill.nightconfig.json.JsonFormat.<clinit>(JsonFormat.java:66)
at it.bcv.invade.appdb.ConfigAdapter.<init>(ConfigAdapter.java:39)
at it.bcv.invade.appdb.Db.<init>(Db.java:51)
at it.bcv.invade.appdb.Db.init(Db.java:75)
at it.bcv.invadelite.activities.StartActivity.initDatabase(StartActivity.java:165)
at it.bcv.invadelite.activities.StartActivity.onCreate(StartActivity.java:125)
[...]
и build.gradle
файл имеет следующие строки:
// https://github.com/TheElectronWill/Night-Config
implementation 'com.github.TheElectronWill.Night-Config:core:3.1.0'
implementation 'com.github.TheElectronWill.Night-Config:json:3.1.0'
Класс FormatDetector
подобен этому
private static final Map<String, Supplier<ConfigFormat<?>>> registry = new ConcurrentHashMap<>();
/**
* Registers a ConfigFormat for a specific fileExtension.
*
* @param fileExtension the file extension
* @param format the config format
*/
public static void registerExtension(String fileExtension, ConfigFormat<?> format) {
registry.put(fileExtension, () -> format);
}
в то время как класс JsonFormat
имеет это объявление
private static final JsonFormat<FancyJsonWriter> FANCY = new JsonFormat<FancyJsonWriter>() {
@Override
public FancyJsonWriter createWriter() {
return new FancyJsonWriter();
}
@Override
public ConfigParser<Config> createParser() {
return new JsonParser(this);
}
};
static {
FormatDetector.registerExtension("json", FANCY);
}
Я погуглил об этой ошибке и обнаружил, что это может быть связано с отсутствием некоторых классов в пути к классам.По этой причине я проанализировал apk с помощью анализатора Android Studio и обнаружил, что в classes.dex
есть оба пакета com.electronwill.nightconfig.core
и com.electronwill.nightconfig.json
, которые являются единственными двумя пакетами, которые я использую.
Я отлаживал приложение на многих телефонах, и единственное, что вызывает проблемы - это Android 5.1.1.Я не знаю, могут ли другие версии Android вызывать проблемы, но я думаю, что версия Android не является основной проблемой.
Кто-нибудь может помочь мне решить эту проблему, пожалуйста?Кто-нибудь знает, почему я получаю эту ошибку даже с Gradle и только в одном телефоне?