Я уже некоторое время использую Glide 4.11.0 и Realm 6.0.2 и недавно обновил Android Studio 4.0.x до 4.1. Все идет хорошо. Сегодня запустил lint checker, начал чистить, ничего необычного (казалось бы). Одной из вещей, которые я много сделал, была замена операторов switch, которые тестировались на R.id. с операторами if-else согласно предупреждению о том, что произойдет в Gradle 5.0.
Когда я сделал это, я использовал несколько переменных int, которые я назвал «id», которые должны были заменить значение для сравнения, то есть вместо оператора switch, который был бы:
switch (menuOpt.getId()) {
case R.id.xxx:
...
}
Я бы сделал:
int id = menuOpt.getId();
if ( id == R.id.XXX) {
} else if....
согласно новым рекомендациям. Внезапно при полной сборке AS жалуется, что больше не распознает GlideApp, и я также получаю очень странное сообщение о том, что Realm не может правильно обрабатывать:
C:\BLD\AndroidStudioProjects\InTouch\app\src\main\java\com\reddragon\intouch\ui\MediaPlayerActivity.java:61: error: cannot find symbol
import com.reddragon.intouch.utils.GlideApp;
^
symbol: class GlideApp
location: package com.reddragon.intouch.utils
C:\BLD\AndroidStudioProjects\InTouch\app\src\main\java\com\reddragon\intouch\ui\MediaDialogActivity.java:92: error: cannot find symbol
import com.reddragon.intouch.utils.GlideApp;
^
symbol: class GlideApp
location: package com.reddragon.intouch.utils
C:\BLD\AndroidStudioProjects\InTouch\app\src\main\java\com\reddragon\intouch\ui\MediaListActivity.java:48: error: cannot find symbol
import com.reddragon.intouch.utils.GlideApp;
^
symbol: class GlideApp
location: package com.reddragon.intouch.utils
Note: Version 10.0.0 of Realm is now available: https://static.realm.io/downloads/java/latest
Note: Processing class Album
error: Class "Album" contains illegal final field "id".
Note: [1] Wrote GeneratedAppGlideModule with: []
Class "Album" contains illegal final field "id".
4 errors
У меня было поле «id» в моем классе «Альбом» около 2 лет без проблем!
Никакой способ перестроения, аннулирования кеша и перезапуска, синхронизации файлов gradle или перезагрузки всего с диска, похоже, не помогает.
На самом деле, если я аннулирую и перезапущу, я не получу красную волнистую линию в классах-нарушителях, которые ссылаются на GlideApp, но как только я начну запускать приложение и оно пройдет процесс сборки, оно выдаст ошибку.
Я немного погуглил и нашел один пост, в котором, казалось, был какой-то конфликт между Realm и Glide (RequestOptions), но мне странно, почему это вдруг начало происходить?
Я проверил, что класс GlideAppjava фактически создается — я использую вариант сборки отладки, и я вижу в файловой системе GlideApp.java, который находится в каталоге ap_generated_sources/debug в соответствующем пакете, где у меня есть мой класс, который расширяет AppGlideModule с помощью аннотации @GlideModule.
Итак, GlideApp генерируется. Его просто не узнают.
Одна из других новых вещей заключается в том, что я недавно создал модуль динамических функций. Этот модуль зависит от класса, который находится в базовом модуле (где есть ссылка на GlideApp). Не уверен, что это актуально (у меня было много-много успешных сборок, прежде чем я начал заниматься очисткой от ворсинок).
Так расстраивает! Любая помощь приветствуется.