从 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;
}
}
我有一个使用 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;
}
}