2

我希望有人以前遇到过这种情况,而这只是我缺少的一个简单设置。基本上我已经构建了一个使用 Glide 的 Kotlin 库,并使用 dagger 在该库中设置我的 glide 实例。这个库本身,在一个虚拟应用程序中运行完美,没有问题。

我有一个旧的 Java 项目,我正在使用这个库进行测试。一切似乎都很好,除非我使用 Glide 功能点击屏幕。应用程序和库中都在使用 Glide,它们似乎正在发生冲突。

这是错误:

java.lang.ClassCastException: appPackage1.Utilities.GlideRequests cannot be cast to appPackage2.di.module.GlideRequests
        at appPackage2.di.module.GlideApp.with(GlideApp.java:88)

在旧的 Java 应用程序 Glide 中存在:

@GlideModule
public final class MyAppGlideModule extends AppGlideModule {}

在我的 Kotlin 库中,Glide 存在为:

@GlideModule
class AppGlideModule : AppGlideModule()

当从我的库中调用它时,它会引发错误:

GlideApp.with(requireContext()).load
4

1 回答 1

4

看起来我需要更深入地研究文档。

http://bumptech.github.io/glide/doc/configuration.html#avoid-appglidemodule-in-libraries

避免在库中使用 AppGlideModule

库不得包含 AppGlideModule 实现。这样做将阻止任何依赖于库的应用程序管理它们的依赖项或配置选项,如 Glide 的缓存大小和位置。

此外,如果两个库都包含 AppGlideModules,如果它们依赖于两者,应用程序将无法编译,并且将被迫选择一个或另一个。

这确实意味着库将无法使用 Glide 生成的 API,但使用 RequestOptions 加载仍然可以正常工作(请参阅选项页面以获取示例)。

还有一个相关的 Github 问题: https ://github.com/bumptech/glide/issues/2393

希望如果其他人遇到这个问题,这个答案会有所帮助。

于 2018-12-14T21:56:21.953 回答