Glide显示错误:无法找到GeneratedAppGlideModule

Rid*_*dhi 18 data-binding android android-glide

我试图使用滑动加载图像但不知何故我无法使用滑动加载图像.因为它显示以下错误:

无法找到GeneratedAppGlideModule.您应该在com.github.bumptech.glide中包含annotationProcessor编译依赖项:应用程序中的编译器和@GlideModule带注释的AppGlideModule实现或者LibraryGlideModules将被静默忽略.

我也提到了这个解决方案.但是,我已经有了更新的滑行版本.

在我的gradle中,我补充说

implementation 'com.github.bumptech.glide:glide:4.7.1'
Run Code Online (Sandbox Code Playgroud)

annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'
Run Code Online (Sandbox Code Playgroud)

XML

<?xml version="1.0" encoding="utf-8"?>

<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".view.SettingActivity">

    <data>
        <variable
            name="settingsViewModel"
            type="com.sevenbits.android.mvvmsample.viewmodel.SettingsViewModel"/>

    </data>

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/splash_bg">

        <android.support.constraint.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <LinearLayout
                android:id="@+id/profile"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="20dp"
                android:background="@color/white"
                android:elevation="10dp"
                android:orientation="vertical"
                android:padding="5dp"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toTopOf="parent">

                <de.hdodenhof.circleimageview.CircleImageView
                    android:layout_width="100dp"
                    android:layout_height="100dp"
                    android:layout_gravity="center"
                    android:layout_margin="10dp"
                    app:image_url="@{settingsViewModel.imageUrl}"
                    app:civ_border_width="2dp"
                    app:civ_border_color="@color/colorPrimary"/>

                  ...
            </LinearLayout>

    </android.support.constraint.ConstraintLayout>

</ScrollView>
Run Code Online (Sandbox Code Playgroud)

CustomBindingAdapter

public class CustomBindingAdapter {

@BindingAdapter({"bind:image_url"})
public static void loadImage(ImageView imageView, String url) {

    RequestOptions requestOptions = new RequestOptions();
    requestOptions=requestOptions.placeholder(R.drawable.boy_32);

        Glide.with(imageView.getContext())
                .load(url)
                .apply(requestOptions)
                .into(imageView);
}
Run Code Online (Sandbox Code Playgroud)

Rid*_*dhi 30

最后,我在这里找到了答案.

我做了什么:

步骤1

我创建了一个名为的空类 GlideApp

import com.bumptech.glide.annotation.GlideModule;
import com.bumptech.glide.module.AppGlideModule;

@GlideModule
public class GlideApp extends AppGlideModule {

}
Run Code Online (Sandbox Code Playgroud)

注意:不要忘记添加注释@GlideModule.

第2步 之后,我建立/重建项目,然后,换成GlideGlideApp.而现在没有必要使用RequestOptions.

public class CustomBindingAdapter {

    @BindingAdapter({"bind:image_url"})
    public static void loadImage(ImageView imageView, String url) {

//        RequestOptions requestOptions = new RequestOptions();
//        requestOptions=requestOptions.placeholder(R.drawable.boy_32);

        GlideApp.with(imageView.getContext())
                .load(url)
                .placeholder(R.drawable.boy_32)
                .into(imageView);

//            Glide.with(imageView.getContext())
//                    .load(url)
//                    .apply(requestOptions)
//                    .into(imageView);
    }
}
Run Code Online (Sandbox Code Playgroud)

就这样.

  • 似乎不适用于Glide 4.9.0版。这会导致错误“无法解析方法'with' (6认同)
  • 不适合我,找不到方法尝试了以下所有解决方案。 (3认同)
  • @ezaspi 如果您使用 Kotlin,则需要在 build.gradle 依赖项中将 `annotationProcessor` 替换为 `kapt`。请记住还要添加 `apply plugin: "kotlin-kapt"`。此外,您正在引用“AppGlideModule”实现,但您应该使用“GlideApp”, (2认同)

Ars*_*hak 13

Kotlin解决方案:

确保在gradle文件中添加了以下内容(用kapt source替换注解Processor ):

repositories {
  mavenCentral()
  google()
}

dependencies {
    implementation 'com.github.bumptech.glide:glide:4.8.0'
    kapt 'com.github.bumptech.glide:compiler:4.8.0'
}
Run Code Online (Sandbox Code Playgroud)


添加AppGlideModule实现您的应用程序GlideSource(你可以覆盖默认的方法overrideSource):

import android.content.Context
import com.bumptech.glide.GlideBuilder
import com.bumptech.glide.annotation.GlideModule
import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.bumptech.glide.module.AppGlideModule
import com.bumptech.glide.request.RequestOptions
import com.bumptech.glide.signature.ObjectKey

@GlideModule
class AppNameGlideModule : AppGlideModule() {

    override fun applyOptions(context: Context, builder: GlideBuilder) {
        super.applyOptions(context, builder)
        builder.apply { RequestOptions().diskCacheStrategy(DiskCacheStrategy.ALL).signature(ObjectKey(System.currentTimeMillis().toShort())) }
    }

}
Run Code Online (Sandbox Code Playgroud)


使用滑行时,请使用GlideApp代替Glide,例如:

GlideApp.with(context)
            .load(url)
            .into(imageView)
Run Code Online (Sandbox Code Playgroud)

  • @SpyZip 尝试重建应用程序(“构建”&gt;“重建项目”)或使缓存无效(“文件”&gt;“使缓存无效/重新启动”) (2认同)
  • 如果将新类命名为“GlideApp”,则会出现“重复类”错误。您应该将其命名为其他名称,例如“MyGlideModule”。将为您生成 GlideApp 类。 (2认同)

小智 9

我遇到过这个问题 Glide:4.9.0AndroidX 时
就这样解决了

在你的 gradle.properties 中
android.useAndroidX = true
android.enableJetifier=true

在你的 build.gradle
//Glide dependency implementation 'com.github.bumptech.glide:glide:4.9.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'

然后添加你的 CustomGlideModule
@GlideModule public class CustomeGlideModule extends AppGlideModule {}

最后一步生成 GlideModule
Build >> Make Project,您应该会在 build 文件夹中看到生成的模块


Mah*_*eja 7

以上所有答案都是正确的并且工作正常

但我注意到当使用#placeholder#error方法时,glide 可以正常工作,无需构建GlideModule类,如上所述

示例:当像这样使用 glide 时不起作用并且必须构建GlideModule

Glide.with(this)
             .load(uri)
                .into(imageView);
Run Code Online (Sandbox Code Playgroud)

这是工作正常

Glide.with(this).load(uri).placeholder(android.R.drawable.progress_indeterminate_horizontal).error(android.R.drawable.stat_notify_error).into(imageView);
Run Code Online (Sandbox Code Playgroud)