web-dev-qa-db-ja.com

グライド表示エラー:GeneratedAppGlideModuleが見つかりませんでした

グライドを使用して画像を読み込もうとしていますが、どういうわけかグライドを使用して画像を読み込めません。次のエラーが表示されます:

GeneratedAppGlideModuleが見つかりませんでした。アプリケーションにcomment.github.bumptech.glide:compilerへのannotationProcessorコンパイル依存関係を含める必要があり、@ GlideModule注釈付きAppGlideModule実装またはLibraryGlideModulesは黙って無視されます。

このソリューション も参照しました。しかし、私はすでに更新されたグライドのバージョンを持っています。

私のグラドルに、私は追加しました

implementation 'com.github.bumptech.glide:glide:4.7.1'

そして

annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'

コード

[〜#〜] 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>

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);
}
16
Riddhi

最後に、答えを見つけました こちら

私がやった事 :

ステップ-1

GlideAppという名前の空のクラスを作成しました

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

@GlideModule
public class GlideApp extends AppGlideModule {

}

注:注釈を追加することを忘れないでください@GlideModule

Step-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);
    }
}

編集:androidxおよびGlide versin 4.9.0の場合:

私のアプリのgradle.buildで:

implementation ("com.github.bumptech.glide:glide:4.9.0") {
    exclude group: "com.Android.support"
}
annotationProcessor 'androidx.annotation:annotation:1.0.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
implementation ("com.github.bumptech.glide:glide:4.9.0@aar") {
    transitive = true
}

私のgradle.propertiesで:

Android.enableJetifier=true
Android.useAndroidX=true

それで全部です。

29
Riddhi

Kotlin Solution:

gradleファイルに以下を追加していることを確認してください(annotationProcessorをkapt source に置き換えてください):

repositories {
  mavenCentral()
  google()
}

dependencies {
    implementation 'com.github.bumptech.glide:glide:4.8.0'
    kapt 'com.github.bumptech.glide:compiler:4.8.0'
}


アプリケーションに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())) }
    }

}


グライドを使用しながら、Glideの代わりにGlideAppを使用します、例:

GlideApp.with(context)
            .load(url)
            .into(imageView)
10
Arshak

AndroidXGlide:4.9.0でこの問題に直面しました
このように解決しました

Gradle.propertiesで
Android.useAndroidX = true
Android.enableJetfier=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を生成します
ビルド >> プロジェクトの作成ビルドフォルダーに生成されたモジュールが表示されます

4
raed

上記の答えはすべて真であり、正常に動作します

しかし、#placeholderおよび#errorメソッドを使用すると、ビルドなしでグライドがうまく機能することに気付きましたGlideModule上記のクラス

例:このようなグライドを使用する場合はWordではなく、ビルドする必要がありますGlideModule

Glide.with(this)
             .load(uri)
                .into(imageView);

これはうまくいく

Glide.with(this).load(uri).placeholder(Android.R.drawable.progress_indeterminate_horizontal).error(Android.R.drawable.stat_notify_error).into(imageView);
1

Ridhiの回答に加えて:

正しく動作させるには、isManifestParsingEnabledを含める必要がありました。

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

@GlideModule
public class MyGlideApp extends AppGlideModule {

    @Override
    public boolean isManifestParsingEnabled() {
        return false;
    }

}
0
Max