这是库模块中附带的,因此它不应使用生成的API
升级到Glide 4.9.0
versions.glide = "4.9.0"
implementation "com.github.bumptech.glide:glide:$versions.glide"
kapt "com.github.bumptech.glide:compiler:$versions.glide"
implementation "com.github.bumptech.glide:annotations:$versions.glide"
更新了代码,没有地方使用GlideApp
fun ImageView.loadImg(imageUrl: String) {
// 3.8.0
// if (!TextUtils.isEmpty(imageUrl)) {
// Glide.clear(this)
//
// Glide.with(context).load(imageUrl)
// .diskCacheStrategy(DiskCacheStrategy.ALL)
// .placeholder(ColorDrawable(Color.LTGRAY))
// .into(this)
// }
///
// 4.+ code
var requestOptions : RequestOptions = RequestOptions()
.placeholder(ColorDrawable(Color.LTGRAY))
.diskCacheStrategy(DiskCacheStrategy.ALL)
if (!TextUtils.isEmpty(imageUrl)) {
Glide.with(context)
.setDefaultRequestOptions(requestOptions)
.asBitmap()
.load(imageUrl)
.into(this)
}
}
fun ImageView.clear() {
Glide.with(this.context).clear(this)
}
在Glide.with()
崩溃
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:270)
at com.bumptech.glide.Glide.initializeGlide(Glide.java:223)
at com.bumptech.glide.Glide.checkAndInitializeGlide(Glide.java:184)
at com.bumptech.glide.Glide.get(Glide.java:168)
at com.bumptech.glide.Glide.getRetriever(Glide.java:689)
at com.bumptech.glide.Glide.with(Glide.java:716)
如果添加
@GlideModule
class DPAppGlideModule : AppGlideModule() {
override fun isManifestParsingEnabled(): Boolean {
return false
}
}
它可以工作,但是因为这是一个库模块,所以它不应该有这个模块。
AbstractMethodError: abstract method "void com.bumptech.glide.module.RegistersComponents.registerComponents(android.content.Context, com.bumptech.glide.Glide, com.bumptech.glide.Registry)"
可能是什么原因?
还应避免使用GlideApp以外的任何内容?
答案 0 :(得分:0)
在此库模块中发现,它间接依赖于正在使用Glide3且具有Old GlideModule的用户,而Old GlideModule无法实现Glide 4所需的功能。
Glide 4的module.registerComponents(applicationContext,glide,glide.registry);接受3个参数,但滑翔3仅有2个
for (com.bumptech.glide.module.GlideModule module : manifestModules) {
module.registerComponents(applicationContext, glide, glide.registry);
}