问题描述
我一段时间以来一直在使用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类并删除“最终”声明时,构建现在顺利完成。