首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Android Studio4.1中未找到GlideApp符号

在Android Studio4.1中未找到GlideApp符号
EN

Stack Overflow用户
提问于 2020-10-27 11:05:28
回答 1查看 235关注 0票数 0

我使用Glide 4.11.0和Realm 6.0.2已经有一段时间了,最近我把Android Studio 4.0.x升级到了4.1。一切都进行得很顺利。今天我运行了皮棉检查器,并开始做一些“清理”,没有任何异常(看起来)。我经常做的一件事就是替换针对R.id进行测试的switch语句。使用if-else语句警告在Gradle 5.0中将会发生什么。

当我这样做的时候,我确实使用了一些我命名为'id‘的int变量来替换要比较的值-即,而不是一个switch语句,它将是:

代码语言:javascript
复制
switch (menuOpt.getId()) {
    case R.id.xxx:
        ...
}

我会这样做:

代码语言:javascript
复制
int id = menuOpt.getId();
if ( id == R.id.XXX) {
} else if....

根据新的指导方针。突然,在一个完整的构建中,AS抱怨它不再识别GlideApp,并且我还收到了一条关于Realm无法正确处理的非常奇怪的消息:

代码语言:javascript
复制
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类实际上正在构建-我正在使用调试构建变体,并且我可以在适当包的ap_generated_sources/debug目录中的文件系统GlideApp.java中看到,我的类使用@GlideModule注释扩展了AppGlideModule。

因此,GlideApp正在生成。它就是不被认可。

另一个新特性是我最近创建了一个动态特性模块。此模块确实依赖于基模块(引用GlideApp的位置)中的类。不确定这是否相关(在我开始做lint清理之前,我有很多成功的构建)。

太让人沮丧了!感谢您的帮助。

EN

回答 1

Stack Overflow用户

发布于 2020-10-27 12:11:30

事实证明,答案就在我眼前,尽管有些隐蔽:我做的lint检查的一部分是接受一些关于将变量设置为'final‘的建议-包括在Realm类中用来定义Realm对象的那些变量。Realm不喜欢这一点--上面的构建错误输出包括语句'Class“statement”包含非法的最终字段“id”作为最后一行。“

“相册”扩展了RealmObject,而lint建议的“自动接受”使一些字段成为最终字段是罪魁祸首。

我认为Realm的这个问题以某种方式对其他批注处理造成了连锁反应-当我返回所有RealmObject类并删除"final“声明时,构建现在顺利完成。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64547780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档