Android Studio 3.x: 错误:找不到符号类GlideApp

16

上周末我将Android Studio从2.x升级到了3.x。项目迁移很完美,构建也很顺利。但是现在,不知道为什么,已经有2个小时了,我无法构建,现在Glide出现了这个错误:

Error:(26, 22) error: cannot find symbol class GlideApp

之前一切都很好,我没有改变任何东西(gradle或配置),但是现在出现了这个错误...

关于Glide的信息,在我的Gradle中:

annotationProcessor 'com.github.bumptech.glide:compiler:4.0.0-RC1'
compile 'com.github.bumptech.glide:glide:4.0.0-RC1'
compile 'com.github.bumptech.glide:okhttp3-integration:4.0.0-RC1'

GlideApp文件是自动生成的(我已经检查过了)。

所以,这是一个疯狂的情况。非常感谢大家!


1
有时候出现这个错误是因为你在dagger 2中做错了什么。看一下你的错误底部,检查是否有一些dagger 2的错误,如果有,请先修复它然后重试。 - Soon Santos
1
@SoonSantos 你真是个救命恩人!我浪费了五个小时,因为忽略了第一个错误信息以下的所有内容。结果发现,我在Dagger中漏掉了一个bean。 - Adi
12个回答

12

这些情况经常会出现(例如使用生成的类R时,最终可能无法生成)。我曾经解决这个问题的最简单方法是清理项目并重新构建。如果这样做不起作用,请在顶部菜单中按下File并选择“Invalidate caches and restart”。第二个弹出窗口将出现,请点击“Invalidate caches and restart”。由于Android Studio需要重新索引和重建项目,可能需要一段时间,但它可以解决我遇到的大多数问题。


7
我也遇到了同样的问题,这是我遇到过的最奇怪的错误之一。在我的项目中使用了Butterknife,我发现如果你将视图定义为私有模式,则会出现此错误。
使用方法:
@BindView(R.id.tv_option_one)
TextView tv_option_one;
@BindView(R.id.tv_option_two)
TextView tv_option_two;

替代

@BindView(R.id.tv_option_one)
private TextView tv_option_one;
@BindView(R.id.tv_option_two)
private TextView tv_option_two;

当使用bindView或onClick注释时,Butterknife找不到视图时,大多数情况下会发生这种情况,最糟糕的是,它在除应该出错的地方以外的任何地方都显示错误。


运行得很好。这修复了它。 - XY-JOE

7
这也会发生在你的代码中有其他错误的情况下。由于在此之前抛出了其他错误,Gradle无法生成Glide类。

是的,我也有同样的情况,谢谢您的解释。这里有一个视觉参考,供需要的任何人使用 https://dev59.com/k6Tja4cB1Zd3GeqPG8M1#75518367 - Reejesh

5

当我迁移到AndroidX时,我遇到了同样的问题。最终我通过添加/更新依赖项来解决它。

implementation 'com.github.bumptech.glide:glide:4.8.0-SNAPSHOT'
kapt 'com.github.bumptech.glide:compiler:4.8.0-SNAPSHOT'
kapt 'androidx.annotation:annotation:1.0.0-rc01'

3

Glide 4.x引入了一些破坏性改变,请务必遵循Glide文档中的下载和设置页面的说明。 不要忽略proguard.cfg中的更改。更改后,重新构建项目,然后您应该能够访问GlideApp


2

像这样添加这些依赖项

implementation 'com.github.bumptech.glide:glide:4.8.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'

1
在我的情况下,我忘记应用kapt插件,所以我只需将其添加到我的模块级别的build.gradle中。
apply plugin: 'kotlin-kapt'

您可以在Glide文档中找到更多详细信息。


1
如果您正在使用 DI,您可以尝试注释掉 GlideApp 错误代码,然后重新构建。IDE 应该会告诉您错误的真正位置。

这真的帮了很大忙。谢谢。 - undefined

0

以下类的生成适用于我:

import com.bumptech.glide.annotation.GlideModule;
import com.bumptech.glide.module.AppGlideModule;


@GlideModule
public final class MyAppGlideModule extends AppGlideModule {
//   Dummy. Needed to generate GlideApp. See:
//   GlideApp.with(service). 
}

0
对我来说,问题是有一个不同的导入错误(这是一个“有效”的错误,我确实删除了引用的方法)。
但是因为在构建应用程序时我收到了大约20条消息说找不到GlideApp,所以我甚至没有注意到有这样的错误。

在修正该错误并重新构建项目后,一切恢复正常。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接