Я начал обновлять зависимости для моего старого проекта, но потом заметил, что приложение не запускается после некоторых обновлений dep - оно выдает исключение java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/work/R$bool
. Это может произойти из-за того, что при запуске я перепланирую Worker для выполнения некоторого периода c IO.
Я сузил его до изменения com.android.tools.build:gradle:3.5.1
-> com.android.tools.build:gradle:3.6.1
в build.gradle
, и это соответствует с документами , но это не сильно помогает.
Немного больше контекста о текущей настройке, где возникает проблема:
Я использую старый classpath и версия для рабочей библиотеки с implementation "android.arch.work:work-runtime-ktx:1.0.1"
Я попытался воспроизвести этот набор в тестовом проекте безуспешно, что может указывать на то, что это какая-то проблема с кешем. Я попытался удалить их с помощью rm -rf ~/.gradle/caches
, но это не помогло
Android Studio также отображает эту проблему в файле WorkManagerImpl.java
(из рабочей библиотеки источник), что указывает на то, что это действительно не проблема кэширования gradle
РЕДАКТИРОВАТЬ 1: я попытался удалить использование пакета androidx:work
, и это исключение выдается другой библиотекой поддержки androidx
группа. Это указывает мне на то, что там происходит какая-то другая классная обработка классов.
РЕДАКТИРОВАТЬ 2: Я нашел решение, и это применимо к любым android.support
библиотекам - плагин gradle realm-android
испортила сборку, поэтому обновление, похоже, решило проблему. Подобные проблемы могут возникнуть и с другими плагинами, генерирующими код.
Буду признателен за любые советы о том, как подойти к этому