滑行gradle无法识别ModelLoader

问题描述 投票:2回答:1

我正在尝试使用FirebaseUIFirebase Storage检索照片,并使用Glide在我的图像视图中直接显示它。为此,我创建了一个[[ModelLoader,如Firebase文档中所示:

import com.bumptech.glide.Glide; import com.bumptech.glide.Registry; import com.bumptech.glide.annotation.GlideModule; import com.bumptech.glide.module.AppGlideModule; import com.firebase.ui.storage.images.FirebaseImageLoader; import com.google.firebase.storage.StorageReference; import java.io.InputStream; @GlideModule public class MyAppGlideModule extends AppGlideModule { @Override public void registerComponents(Context context, Glide glide, Registry registry) { // Register FirebaseImageLoader to handle StorageReference registry.append(StorageReference.class, InputStream.class, new FirebaseImageLoader.Factory()); } }
此文件位于我的项目文件夹中,因此gradle应该可以识别它。问题是,每当我运行该应用程序并执行以下代码时:Glide.with(context!!).load(reference).into(binding.imgPhoto)出现此错误:

W/Glide: Failed to find GeneratedAppGlideModule. You should include an annotationProcessor compile dependency on com.github.bumptech.glide:compiler in your application and a @GlideModule annotated AppGlideModule implementation or LibraryGlideModules will be silently ignored E/GlideExecutor: Request threw uncaught throwable com.bumptech.glide.Registry$NoModelLoaderAvailableException: Failed to find any ModelLoaders registered for model class: class com.google.firebase.storage.StorageReference at com.bumptech.glide.load.model.ModelLoaderRegistry.getModelLoaders(ModelLoaderRegistry.java:77) at com.bumptech.glide.Registry.getModelLoaders(Registry.java:585) at com.bumptech.glide.load.engine.DecodeHelper.getLoadData(DecodeHelper.java:207) at com.bumptech.glide.load.engine.DecodeHelper.getCacheKeys(DecodeHelper.java:224) at com.bumptech.glide.load.engine.ResourceCacheGenerator.startNext(ResourceCacheGenerator.java:44) at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:310) at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:276) at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:234) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:919) at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:393)

发生了什么事?我已经创建了装载程序,无效的缓存,重新启动,但问题仍然没有解决...
java android-glide firebaseui
1个回答
0
投票
您需要创建一个扩展AppGlideModule的类(例如MyAppGlideModule),并使用GlideApp.with ...而不是Glide.with ...,请检查此link以获取完整说明

类MyAppGlideModule可以存在于源目录中的任何位置,并且在编译时由Glide注释处理器进行处理,以创建GlideApp类。

对于Kotlin:

@GlideModule class AppGlide: AppGlideModule(){ override fun registerComponents( context: android.content.Context, glide: Glide, registry: Registry ) { super.registerComponents(context, glide, registry) registry.append( StorageReference::class.java, InputStream::class.java, FirebaseImageLoader.Factory() ) } }

© www.soinside.com 2019 - 2024. All rights reserved.