在Android Studio 4.1中找不到GlideApp符号

问题描述

我一段时间以来一直在使用Glide 4.11.0和Realm 6.0.2,最近将Android Studio 4.0.x升级到了4.1。一切都很好。今天,我运行了棉绒检查器,开始进行一些“清理”工作,这与众不同(看起来很正常)。我做过的很多事情之一就是替换了针对R.id进行测试的switch语句。根据Lint警告中的if-else语句,说明Gradle 5.0中将会发生什么。

当我这样做时,我确实使用了多个名为“ id”的int变量来替换要比较的值-即,而不是使用以下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'字段大约两年了!

似乎没有任何方法可以重建,使缓存无效并重新启动,同步gradle文件或“从磁盘重新加载所有文件”。

实际上,如果我使它无效并重新启动,则在引用GlideApp的有问题的类中不会出现红色的花样,但是一旦我开始运行该应用程序并经历构建过程,它就会出错。 / p>

我用Google搜索了一下,发现了一个帖子,其中说Realm和Glide(RequestOptions)之间有些冲突,但是对我来说奇怪的是为什么这突然开始发生?

我已经验证了GlideAppjava类实际上是在构建的-我正在使用debug build变体,并且可以在文件系统GlideApp.java中找到ap_generation_sources / debug目录中正确的软件包中的文件。我的类通过@GlideModule注释扩展了AppGlideModule。

因此正在生成GlideApp。只是没有得到认可。

一个功能是我最近创建了一个动态功能模块。该模块确实依赖于基本模块(引用了GlideApp)中的类。不知道这是否相关(在开始进行棉绒清理之前,我已经完成了很多成功的构建)。

太令人沮丧了!任何帮助表示赞赏。

解决方法

事实证明,答案虽然正确,但似乎一直盯着我:我做过的皮棉检查的一部分是接受一些有关使变量“最终”的建议-包括在Realm类中用于定义Realm对象的那些建议。领域不喜欢这样-上面的构建错误输出最后一行包含语句“类“专辑”包含非法的最终字段“ id”。”

“专辑”扩展了RealmObject,皮棉建议中的“自动接受”功能使某些字段最终成为罪魁祸首。

我认为Realm的此问题在其他注释处理中以某种方式引起了连锁反应-当我返回所有RealmObject类并删除“最终”声明时,构建现在顺利完成。