在最新的 Firebase 版本 (10.2.4) 中使用 Glide 和 FirebaseUI 加载图像

Posted

技术标签:

【中文标题】在最新的 Firebase 版本 (10.2.4) 中使用 Glide 和 FirebaseUI 加载图像【英文标题】:Loading Images with Glide and FirebaseUI in newest Firebase Version (10.2.4) 【发布时间】:2017-10-06 19:22:07 【问题描述】:

所以我将 firebase 与 playservices 一起更新到了最新版本 (10.2.4),突然我的应用程序中使用 Glide 加载的所有图像都不再加载。 如果我的 build.gradle 中有这个

ext 
    supportLibraryVersion = '25.3.1'
    firebaseLibraryVersion = '10.2.1'
    playServicesLibraryVersion = '10.2.1'


dependencies 
    // play services
    compile "com.google.android.gms:play-services-places:$playServicesLibraryVersion"
    compile "com.google.android.gms:play-services-auth:$playServicesLibraryVersion"
    // firebase
    compile "com.google.firebase:firebase-storage:$firebaseLibraryVersion"
    // ...

运行这行代码运行良好。

Glide.with(mContext).using(new FirebaseImageLoader()).load(storageReference).into(viewHolder.profileImage);

但是,如果我将 firebase 和 play 服务设置为最新版本:

ext 
    supportLibraryVersion = '25.3.1'
    firebaseLibraryVersion = '10.2.4'
    playServicesLibraryVersion = '10.2.4'

然后上面的行不再起作用了。它根本不加载图像。 我将代码更改为这样,以便查看错误可能是什么:

    Glide.with(mContext)
            .using(new FirebaseImageLoader())
            .load(storageReference)
            .listener(new RequestListener<StorageReference, GlideDrawable>() 
        @Override
        public boolean onException(Exception e, StorageReference model, Target<GlideDrawable> target, boolean isFirstResource) 
            Log.d(TAG, "exception " + e.getMessage());
            e.printStackTrace();
            return false;
        

        @Override
        public boolean onResourceReady(GlideDrawable resource, StorageReference model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) 
            return false;
        
    ).into(viewHolder.mProfileImage);

我得到了这个日志语句:

Could not open resulting stream.

还有这个例外:

  W/System.err: java.io.IOException: Could not open resulting stream.
05-08 19:10:04.513 8839-8839/com.gmail.linxydev.clientapp W/System.err:     at com.google.firebase.storage.StreamDownloadTask.zzacI(Unknown Source)
05-08 19:10:04.513 8839-8839/com.gmail.linxydev.clientapp W/System.err:     at com.google.firebase.storage.StreamDownloadTask.zza(Unknown Source)
05-08 19:10:04.513 8839-8839/com.gmail.linxydev.clientapp W/System.err:     at com.google.firebase.storage.StreamDownloadTask$1.zzacK(Unknown Source)
05-08 19:10:04.513 8839-8839/com.gmail.linxydev.clientapp W/System.err:     at com.google.firebase.storage.StreamDownloadTask$1.call(Unknown Source)
05-08 19:10:04.514 8839-8839/com.gmail.linxydev.clientapp W/System.err:     at com.google.firebase.storage.StreamDownloadTask$zza.zzacM(Unknown Source)
05-08 19:10:04.514 8839-8839/com.gmail.linxydev.clientapp W/System.err:     at com.google.firebase.storage.StreamDownloadTask$zza.read(Unknown Source)
05-08 19:10:04.514 8839-8839/com.gmail.linxydev.clientapp W/System.err:     at java.io.BufferedInputStream.read(BufferedInputStream.java:290)
05-08 19:10:04.514 8839-8839/com.gmail.linxydev.clientapp W/System.err:     at com.bumptech.glide.load.resource.bitmap.RecyclableBufferedInputStream.fillbuf(RecyclableBufferedInputStream.java:166)
05-08 19:10:04.514 8839-8839/com.gmail.linxydev.clientapp W/System.err:     at com.bumptech.glide.load.resource.bitmap.RecyclableBufferedInputStream.read(RecyclableBufferedInputStream.java:229)
05-08 19:10:04.514 8839-8839/com.gmail.linxydev.clientapp W/System.err:     at com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$StreamReader.getUInt16(ImageHeaderParser.java:334)
05-08 19:10:04.514 8839-8839/com.gmail.linxydev.clientapp W/System.err:     at com.bumptech.glide.load.resource.bitmap.ImageHeaderParser.getType(ImageHeaderParser.java:87)
05-08 19:10:04.514 8839-8839/com.gmail.linxydev.clientapp W/System.err:     at com.bumptech.glide.load.resource.gifbitmap.GifBitmapWrapperResourceDecoder$ImageTypeParser.parse(GifBitmapWrapperResourceDecoder.java:147)
05-08 19:10:04.514 8839-8839/com.gmail.linxydev.clientapp W/System.err:     at com.bumptech.glide.load.resource.gifbitmap.GifBitmapWrapperResourceDecoder.decodeStream(GifBitmapWrapperResourceDecoder.java:82)
05-08 19:10:04.514 8839-8839/com.gmail.linxydev.clientapp W/System.err:     at com.bumptech.glide.load.resource.gifbitmap.GifBitmapWrapperResourceDecoder.decode(GifBitmapWrapperResourceDecoder.java:71)
05-08 19:10:04.514 8839-8839/com.gmail.linxydev.clientapp W/System.err:     at com.bumptech.glide.load.resource.gifbitmap.GifBitmapWrapperResourceDecoder.decode(GifBitmapWrapperResourceDecoder.java:61)
05-08 19:10:04.514 8839-8839/com.gmail.linxydev.clientapp W/System.err:     at com.bumptech.glide.load.resource.gifbitmap.GifBitmapWrapperResourceDecoder.decode(GifBitmapWrapperResourceDecoder.java:22)
05-08 19:10:04.514 8839-8839/com.gmail.linxydev.clientapp W/System.err:     at com.bumptech.glide.load.engine.DecodeJob.decodeFromSourceData(DecodeJob.java:190)
05-08 19:10:04.514 8839-8839/com.gmail.linxydev.clientapp W/System.err:     at com.bumptech.glide.load.engine.DecodeJob.decodeSource(DecodeJob.java:177)
05-08 19:10:04.514 8839-8839/com.gmail.linxydev.clientapp W/System.err:     at com.bumptech.glide.load.engine.DecodeJob.decodeFromSource(DecodeJob.java:128)
05-08 19:10:04.514 8839-8839/com.gmail.linxydev.clientapp W/System.err:     at com.bumptech.glide.load.engine.EngineRunnable.decodeFromSource(EngineRunnable.java:122)
05-08 19:10:04.514 8839-8839/com.gmail.linxydev.clientapp W/System.err:     at com.bumptech.glide.load.engine.EngineRunnable.decode(EngineRunnable.java:101)
05-08 19:10:04.514 8839-8839/com.gmail.linxydev.clientapp W/System.err:     at com.bumptech.glide.load.engine.EngineRunnable.run(EngineRunnable.java:58)
05-08 19:10:04.514 8839-8839/com.gmail.linxydev.clientapp W/System.err:     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
05-08 19:10:04.514 8839-8839/com.gmail.linxydev.clientapp W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
05-08 19:10:04.514 8839-8839/com.gmail.linxydev.clientapp W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
05-08 19:10:04.514 8839-8839/com.gmail.linxydev.clientapp W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
05-08 19:10:04.514 8839-8839/com.gmail.linxydev.clientapp W/System.err:     at java.lang.Thread.run(Thread.java:818)
05-08 19:10:04.514 8839-8839/com.gmail.linxydev.clientapp W/System.err:     at com.bumptech.glide.load.engine.executor.FifoPriorityThreadPoolExecutor$DefaultThreadFactory$1.run(FifoPriorityThreadPoolExecutor.java:118)

回到版本 10.2.1 解决了这些问题,但也许还有其他解决方法?我在 2 台设备上进行了测试,一台运行 android 6,另一台运行 7,两者都发生了。

【问题讨论】:

您使用的是哪个版本的 FirebaseUI? 最新的,它唯一的一类存储。 你可以在没有 minifyEnabled 的情况下运行代码,这样异常会更清楚吗? 它没有启用,我相信google混淆了他们的firebase库。 无法发表评论,所以我就在这里写一个注释:此错误仅在您使用 glide 3.8.0 时发生:将 glide 降级到 3.7.0 并且一切正常! 【参考方案1】:

对我来说,这似乎是 fixed,最新的 11.0.1 版本与 firebase-ui-2.0.1 结合使用。我不知道发生了什么变化。

【讨论】:

以上是关于在最新的 Firebase 版本 (10.2.4) 中使用 Glide 和 FirebaseUI 加载图像的主要内容,如果未能解决你的问题,请参考以下文章

CocoaPods Firebase 最新版本无法更新

firebase pod 安装的版本低于存在的最新版本

如何使用 firebase 消息传递 9.0 版本 最新版本

iOS 上 Google/Analytics 的最新 pod 版本要我安装 Firebase

Firebase gradle build使用最新的11.8.0版本获取错误

如何在 m1 上使用具有 nullsafety 的 firebase? [ 解决了 ]