从 Glide 3 迁移到 4 并在启动应用程序时出现 AbstractMethodError

Migrated from Glide 3 to 4 and having a AbstractMethodError when launching the app

我有一个使用 Glide 3.8.0 的应用程序,我刚刚将它迁移到 4.8.0。在迁移所有代码以使用新的 Glide API 后,我发现我的应用程序在尝试从网络加载图像时启动此错误:

java.lang.AbstractMethodError: abstract method "void com.bumptech.glide.module.RegistersComponents.registerComponents(android.content.Context, com.bumptech.glide.Glide, com.bumptech.glide.Registry)"
        at com.bumptech.glide.Glide.initializeGlide(Glide.java:268)
        at com.bumptech.glide.Glide.initializeGlide(Glide.java:221)
        at com.bumptech.glide.Glide.checkAndInitializeGlide(Glide.java:182)
        at com.bumptech.glide.Glide.get(Glide.java:166)
        at com.bumptech.glide.Glide.getRetriever(Glide.java:680)
        at com.bumptech.glide.Glide.with(Glide.java:732)
        at com.fewlaps.android.quitnow.usecase.main.MainActivity.updateAvatar(MainActivity.java:356)
        etc...

我已完成设置 explained in the official documentation。根据它的要求,我写了一个扩展 AppGlideModule 的 class,它由 @GlideModule 注释,它是空的。空的?官方文档说:

您不需要实现 AppGlideModule 中的任何方法来生成 API。你可以将 class 留空,只要它扩展了 AppGlideModule 并用 @GlideModule 注释。

根据Error的消息,我的问题肯定与registerComponents()有关,但我也尝试用空白实现来实现它,但问题仍然存在。

AppGlideModule 的 JavaDoc 中所述(据我所知,只有那里...),如果您完成了从 3.x.x 到 4.x.x 的迁移,您必须实施 isManifestParsingEnabled() 返回 false.

所以,您将以这样的 CustomAppGlideModule 结尾:

@GlideModule
public class QNGlideModule extends AppGlideModule {

    @Override
    public boolean isManifestParsingEnabled() {
        return false;
    }
}