Android Studio 3.x: error: cannot find symbol class GlideApp

Android Studio 3.x: error: cannot find symbol class GlideApp

我在上周末将 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文件是自动生成的(我查过了)

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

其中一些情况往往会不时弹出(例如生成了 class R,最终没有生成)。我过去解决这个问题的最简单方法是清理项目并重建它。如果这不起作用,请在顶部菜单中按 File,然后按 "Invalidate caches and restart"。将出现第二个弹出窗口,按 "Invalidate caches and restart"。这可能需要一段时间,因为 Android Studio 需要重新索引并重建项目,但它解决了我遇到的大多数问题。

Glide 4.x 引入了一些重大变化。请务必遵循 Download & Setup page of Glide docs 中的说明。 不要忽略 proguard.cfg 中的变化。更改后,重新构建您的项目,您应该可以访问 GlideApp.

当 sub-package 使用 GlideApp 并且 AppGlideModule 在 class 包层次结构的上一级扩展时,我发现了这个问题。

我怀疑编译器在生成 GlipeApp 之前尝试编译 sub-package classes。

我的解决方案是在单独的模块中扩展 AppGlideModule,然后将其作为依赖项添加到所有使用 GlideApp 的模块。

同样的事情发生在我身上,这是我遇到过的最奇怪的错误之一, 我在我的项目中使用了 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;

这主要发生在 Butterknife 在使用 bindView 或 onClick 注释时找不到视图时,最糟糕的是它会在应该显示错误的地方显示错误。

我 运行 在迁移到 AndroidX 时遇到了同样的问题。我最终通过 adding/updating 对

的依赖解决了它
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'

在我的例子中,我忘记应用 kapt 插件,所以我只是将它添加到我的模块级别 build.gradle

apply plugin: 'kotlin-kapt'

您可以找到有关它的更多详细信息 - Glide Docs

像这样添加那些依赖项

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

如果您使用的是 DI,您可以尝试注释掉 GlideApp 错误代码,然后重建。 IDE你应该知道错误的真正所在。

我得到了这个问题的解决方案。

构建 -> 清理项目(之后)重建项目

然后你就可以在你的项目中导入 GlideApp

供参考 https://github.com/bumptech/glide/issues/1945

当您的代码中出现另一个错误时,也会发生这种情况。 Gradle 无法生成 Glide 类 因为在它之前抛出了另一个错误

对我来说,问题是出现了不同的导入错误(这是一个“有效”错误,我确实删除了引用的方法)。

但是因为我在构建应用程序时收到了大约 20 条 GlideApp 无法找到的消息,所以我什至没有注意到有这样的错误。


更正错误并重建项目后,一切又恢复正常了。

生成以下 class 对我有用:

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). 
}