Matisse: Glide 用 4.3 报错

Created on 3 Jan 2018  ·  4Comments  ·  Source: zhihu/Matisse

 java.lang.NoSuchMethodError: No virtual method 
load(Landroid/net/Uri;)Lcom/bumptech/glide/DrawableTypeRequest; in class 
Lcom/bumptech/glide/RequestManager; or its super classes (declaration of 
'com.bumptech.glide.RequestManager' appears in /data/app/com.baiheng.zflowerbud-
1/base.apk:classes3.dex)

Most helpful comment

可以自己定义图片加载引擎 比如

public class GlideEngine implements ImageEngine {

@Override
public void loadThumbnail(Context context, int resize, Drawable placeholder, ImageView imageView, Uri uri) {
    GlideApp.with(context)
            .load(uri)
            .placeholder(placeholder)
            .override(resize, resize)
            .centerCrop()
            .into(imageView);
}

@Override
public void loadAnimatedGifThumbnail(Context context, int resize, Drawable placeholder, ImageView imageView, Uri uri) {
    GlideApp.with(context)
            .load(uri)
            .placeholder(placeholder)
            .override(resize, resize)
            .centerCrop()
            .into(imageView);
}

@Override
public void loadImage(Context context, int resizeX, int resizeY, ImageView imageView, Uri uri) {
    GlideApp.with(context)
            .load(uri)
            .override(resizeX, resizeY)
            .priority(Priority.HIGH)
            .into(imageView);
}

@Override
public void loadAnimatedGifImage(Context context, int resizeX, int resizeY, ImageView imageView, Uri uri) {
    GlideApp.with(context)
            .asGif()
            .load(uri)
            .override(resizeX, resizeY)
            .priority(Priority.HIGH)
            .into(imageView);
}

@Override
public boolean supportAnimatedGif() {
    return true;
}

All 4 comments

I am also getting the same issue when running proguard. I have included the following to stop picasso warnings appearing but getting the following warnings using the following versions:

implementation 'com.zhihu.android:matisse:0.5.0-alpha4'
implementation 'com.github.bumptech.glide:glide:4.2.0'
Warning: com.zhihu.matisse.engine.impl.GlideEngine: can't find referenced method 'com.bumptech.glide.DrawableTypeRequest load(android.net.Uri)' in program class com.bumptech.glide.RequestManager
Warning: com.zhihu.matisse.engine.impl.GlideEngine: can't find referenced class com.bumptech.glide.DrawableTypeRequest
Warning: com.zhihu.matisse.engine.impl.GlideEngine: can't find referenced class com.bumptech.glide.BitmapTypeRequest
Warning: com.zhihu.matisse.engine.impl.GlideEngine: can't find referenced class com.bumptech.glide.BitmapRequestBuilder
Warning: com.zhihu.matisse.engine.impl.GlideEngine: can't find referenced class com.bumptech.glide.BitmapRequestBuilder
Warning: com.zhihu.matisse.engine.impl.GlideEngine: can't find referenced class com.bumptech.glide.BitmapRequestBuilder
Warning: com.zhihu.matisse.engine.impl.GlideEngine: can't find referenced class com.bumptech.glide.DrawableTypeRequest
Warning: com.zhihu.matisse.engine.impl.GlideEngine: can't find referenced class com.bumptech.glide.DrawableRequestBuilder
Warning: com.zhihu.matisse.engine.impl.GlideEngine: can't find referenced class com.bumptech.glide.DrawableRequestBuilder
Warning: com.zhihu.matisse.engine.impl.GlideEngine: can't find referenced class com.bumptech.glide.DrawableTypeRequest
Warning: com.zhihu.matisse.engine.impl.GlideEngine: can't find referenced class com.bumptech.glide.GifTypeRequest
Warning: com.zhihu.matisse.engine.impl.GlideEngine: can't find referenced class com.bumptech.glide.GifRequestBuilder
Warning: com.zhihu.matisse.engine.impl.GlideEngine: can't find referenced class com.bumptech.glide.GifRequestBuilder
Warning: com.zhihu.matisse.engine.impl.GlideEngine: can't find referenced class com.bumptech.glide.DrawableTypeRequest
Warning: com.zhihu.matisse.engine.impl.GlideEngine: can't find referenced class com.bumptech.glide.BitmapTypeRequest
Warning: com.zhihu.matisse.engine.impl.GlideEngine: can't find referenced class com.bumptech.glide.BitmapRequestBuilder
Warning: com.zhihu.matisse.engine.impl.GlideEngine: can't find referenced class com.bumptech.glide.DrawableRequestBuilder
Warning: com.zhihu.matisse.engine.impl.GlideEngine: can't find referenced class com.bumptech.glide.GifTypeRequest
Warning: com.zhihu.matisse.engine.impl.GlideEngine: can't find referenced class com.bumptech.glide.GifRequestBuilder

可以自己定义图片加载引擎 比如

public class GlideEngine implements ImageEngine {

@Override
public void loadThumbnail(Context context, int resize, Drawable placeholder, ImageView imageView, Uri uri) {
    GlideApp.with(context)
            .load(uri)
            .placeholder(placeholder)
            .override(resize, resize)
            .centerCrop()
            .into(imageView);
}

@Override
public void loadAnimatedGifThumbnail(Context context, int resize, Drawable placeholder, ImageView imageView, Uri uri) {
    GlideApp.with(context)
            .load(uri)
            .placeholder(placeholder)
            .override(resize, resize)
            .centerCrop()
            .into(imageView);
}

@Override
public void loadImage(Context context, int resizeX, int resizeY, ImageView imageView, Uri uri) {
    GlideApp.with(context)
            .load(uri)
            .override(resizeX, resizeY)
            .priority(Priority.HIGH)
            .into(imageView);
}

@Override
public void loadAnimatedGifImage(Context context, int resizeX, int resizeY, ImageView imageView, Uri uri) {
    GlideApp.with(context)
            .asGif()
            .load(uri)
            .override(resizeX, resizeY)
            .priority(Priority.HIGH)
            .into(imageView);
}

@Override
public boolean supportAnimatedGif() {
    return true;
}

还没升级Glide4.x的计划么?

考虑到还有人会继续使用 Glide V3,为了保证兼容,内部GlideEngine 暂时没有升级计划。
ImageEngine 是一个接口,完全可以自己实现的。具体可以参考 README

Was this page helpful?
0 / 5 - 0 ratings