无法使用(com.firebase.ui.storage.images.FirebaseImageLoader)解析方法
Cannot resolve method using(com.firebase.ui.storage.images.FirebaseImageLoader)
我正在尝试使用 FirebaseUI 提供的出色的 Glide 集成,但我无法这样做。
我已遵循此处描述的所有内容:Downloading images with FirebaseUI
无法使用(com.ui.firebase.storage.images.FirebaseImageLoader)
解析方法
是我目前遇到的错误。
我的设置好吗?
以下是我使用的两个库的版本:
Glide 4.0.0-RC1
FirebaseUI 2.0.1
这是我的 gradle(应用程序):
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
compile 'com.firebase:geofire-android:2.1.1'
compile 'com.google.android.gms:play-services-location:11.0.1'
compile 'com.android.support:design:25.3.1'
implementation 'com.google.firebase:firebase-database:11.0.1'
implementation 'com.android.support:cardview-v7:25.3.1'
compile 'com.firebaseui:firebase-ui-storage:2.0.1'
compile 'com.github.bumptech.glide:glide:4.0.0-RC1'
compile 'com.android.support:support-v4:25.3.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.0.0-RC1'
implementation 'com.google.firebase:firebase-storage:11.0.1'
implementation 'com.google.firebase:firebase-auth:11.0.1'
}
apply plugin: 'com.google.gms.google-services'
很遗憾,FirebaseUI 尚不支持 Glide 4.0,因此您有两个选择:
- 将 Glide 降级为
v3.8.0
- 编写自己的 Glide 模块。您可以查看我关于如何升级 FirebaseUI 存储代码的回复 here。
正在此处跟踪此问题:https://github.com/firebase/FirebaseUI-Android/issues/731
编辑:根据上述 link,该问题已在 3.0 版中得到解决
这件事发生在我身上,我用以下方法解决了它:
// FirebaseUI for Cloud Storage
implementation 'com.firebaseui:firebase-ui-storage:3.3.0'
// Glide
implementation 'com.github.bumptech.glide:glide:4.6.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'
这里是需要扩展AppGlideModule的MyAppGlideModule。
覆盖 "registerComponents" 函数至关重要:
@GlideModule
public final 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());
}
}
以及实际下载图片的函数:
import com.app.path.where.the.myappglidemodule.is.GlideApp;
"Ex: import com.firebase.uidemo.storage.GlideApp //In case MyAppGlideModule is inside storage package"
public void downloadDirect(StorageReference imageRef, ImageView imageView) {
try {
if (imageRef != null) {
// Download directly from StorageReference using Glide
// (See MyAppGlideModule for Loader registration)
GlideApp.with(this)
.load(imageRef)
.centerCrop()
.transition(DrawableTransitionOptions.withCrossFade())
.into(imageView);
} else {
Log.e(TAG, "Null image storage reference!");
}
}catch (Exception ex){
Log.e(TAG, ex.toString());
}
}
您必须在 Gradle 依赖项 (/app/build.gradle) 中包含 firebase-ui-storage
,如下所示:
dependencies {
implementation 'com.firebaseui:firebase-ui-storage:6.2.1'
}
检查:last version of this library
然后导入包:
import com.firebase.ui.storage.images.FirebaseImageLoader;
我正在尝试使用 FirebaseUI 提供的出色的 Glide 集成,但我无法这样做。
我已遵循此处描述的所有内容:Downloading images with FirebaseUI
无法使用(com.ui.firebase.storage.images.FirebaseImageLoader)
解析方法是我目前遇到的错误。
我的设置好吗?
以下是我使用的两个库的版本:
Glide 4.0.0-RC1
FirebaseUI 2.0.1
这是我的 gradle(应用程序):
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
compile 'com.firebase:geofire-android:2.1.1'
compile 'com.google.android.gms:play-services-location:11.0.1'
compile 'com.android.support:design:25.3.1'
implementation 'com.google.firebase:firebase-database:11.0.1'
implementation 'com.android.support:cardview-v7:25.3.1'
compile 'com.firebaseui:firebase-ui-storage:2.0.1'
compile 'com.github.bumptech.glide:glide:4.0.0-RC1'
compile 'com.android.support:support-v4:25.3.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.0.0-RC1'
implementation 'com.google.firebase:firebase-storage:11.0.1'
implementation 'com.google.firebase:firebase-auth:11.0.1'
}
apply plugin: 'com.google.gms.google-services'
很遗憾,FirebaseUI 尚不支持 Glide 4.0,因此您有两个选择:
- 将 Glide 降级为
v3.8.0
- 编写自己的 Glide 模块。您可以查看我关于如何升级 FirebaseUI 存储代码的回复 here。
正在此处跟踪此问题:https://github.com/firebase/FirebaseUI-Android/issues/731
编辑:根据上述 link,该问题已在 3.0 版中得到解决
这件事发生在我身上,我用以下方法解决了它:
// FirebaseUI for Cloud Storage
implementation 'com.firebaseui:firebase-ui-storage:3.3.0'
// Glide
implementation 'com.github.bumptech.glide:glide:4.6.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'
这里是需要扩展AppGlideModule的MyAppGlideModule。 覆盖 "registerComponents" 函数至关重要:
@GlideModule
public final 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());
}
}
以及实际下载图片的函数:
import com.app.path.where.the.myappglidemodule.is.GlideApp;
"Ex: import com.firebase.uidemo.storage.GlideApp //In case MyAppGlideModule is inside storage package"
public void downloadDirect(StorageReference imageRef, ImageView imageView) {
try {
if (imageRef != null) {
// Download directly from StorageReference using Glide
// (See MyAppGlideModule for Loader registration)
GlideApp.with(this)
.load(imageRef)
.centerCrop()
.transition(DrawableTransitionOptions.withCrossFade())
.into(imageView);
} else {
Log.e(TAG, "Null image storage reference!");
}
}catch (Exception ex){
Log.e(TAG, ex.toString());
}
}
您必须在 Gradle 依赖项 (/app/build.gradle) 中包含 firebase-ui-storage
,如下所示:
dependencies {
implementation 'com.firebaseui:firebase-ui-storage:6.2.1'
}
检查:last version of this library
然后导入包:
import com.firebase.ui.storage.images.FirebaseImageLoader;