我使用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语句,它将是:
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类实际上正在构建-我正在使用调试构建变体,并且我可以在适当包的ap_generated_sources/debug目录中的文件系统GlideApp.java中看到,我的类使用@GlideModule注释扩展了AppGlideModule。
因此,GlideApp正在生成。它就是不被认可。
另一个新特性是我最近创建了一个动态特性模块。此模块确实依赖于基模块(引用GlideApp的位置)中的类。不确定这是否相关(在我开始做lint清理之前,我有很多成功的构建)。
太让人沮丧了!感谢您的帮助。
发布于 2020-10-27 12:11:30
事实证明,答案就在我眼前,尽管有些隐蔽:我做的lint检查的一部分是接受一些关于将变量设置为'final‘的建议-包括在Realm类中用来定义Realm对象的那些变量。Realm不喜欢这一点--上面的构建错误输出包括语句'Class“statement”包含非法的最终字段“id”作为最后一行。“
“相册”扩展了RealmObject,而lint建议的“自动接受”使一些字段成为最终字段是罪魁祸首。
我认为Realm的这个问题以某种方式对其他批注处理造成了连锁反应-当我返回所有RealmObject类并删除"final“声明时,构建现在顺利完成。
https://stackoverflow.com/questions/64547780
复制相似问题