运行 时 Firestore RecyclerView 应用崩溃

Firestore RecyclerView app's crashing when run

您好,我刚刚完成我的代码并打算对其进行测试。当 运行 时,它编译正常,但在打开应用程序时崩溃。有谁知道我该如何解决这个问题?

我正在尝试创建一个 RecyclerView 以显示来自各个帖子的评论,并从 Firebase Firestore 中检索它。

我实现了 FirestoreRecyclerAdapter,这是我的 CommentsActivity:

public class CommentsActivity extends AppCompatActivity {

private FirebaseFirestore firebaseFirestore;
private RecyclerView mFirestoreList;
private Toolbar toolbar;

private FirestoreRecyclerAdapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_comments);

    toolbar = findViewById(R.id.newpost_toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setTitle("");
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    firebaseFirestore = firebaseFirestore.getInstance();
    mFirestoreList = findViewById(R.id.comments_List);

    //Query
    Query query = firebaseFirestore.collection("Posts");
    //Recycler Options
    FirestoreRecyclerOptions<BlogPost> options = new FirestoreRecyclerOptions.Builder<BlogPost>()
            .setQuery(query, BlogPost.class)
            .build();

    adapter = new FirestoreRecyclerAdapter<BlogPost, BlogViewHolder>(options) {
        @NonNull
        @Override
        public BlogViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.comments_list_item, parent, false);
            return new BlogViewHolder(view);
        }

        @Override
        protected void onBindViewHolder(@NonNull BlogViewHolder holder, int position, @NonNull BlogPost model) {
            holder.username.setText(model.getUser_id());
            holder.comment.setText(model.getComment());
            holder.userImg.setImageURI(Uri.parse(model.image));
        }
    };

    mFirestoreList.setHasFixedSize(true);
    mFirestoreList.setLayoutManager(new LinearLayoutManager(this));
    mFirestoreList.setAdapter(adapter);

}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            onBackPressed();
            return true;
    }
    return super.onOptionsItemSelected(item);
}

private class BlogViewHolder extends RecyclerView.ViewHolder {

    private TextView username;
    private TextView comment;
    private ImageView userImg;

    public BlogViewHolder(@NonNull View itemView) {
        super(itemView);

        username = itemView.findViewById(R.id.comment_detail_username);
        userImg = itemView.findViewById(R.id.comment_detail_user_img);
        comment = itemView.findViewById(R.id.comment_detail_text);

    }
}

@Override
protected void onStop() {
    super.onStop();
    adapter.stopListening();
}

@Override
protected void onStart() {
    super.onStart();
    adapter.startListening();
}

}

我的博文(模型):

public class BlogPost extends BlogPostID {

public String user_id;
public String image;
public String title;
public String desc;
public String thumbnail;
public String comment;
public Date timestamp;

public BlogPost(){}

public BlogPost(String user_id, String image, String title, String desc, String thumbnail, String comment, Timestamp timestamp) {
    this.user_id = user_id;
    this.image = image;
    this.title = title;
    this.desc = desc;
    this.thumbnail = thumbnail;
    this.comment = comment;
    this.timestamp = timestamp;

}



public String getUser_id() {
    return user_id;
}

public void setUser_id(String user_id) {
    this.user_id = user_id;
}

public String getImage() {
    return image;
}

public void setImage(String image) {
    this.image = image;
}

public String getTitle() {
    return title;
}

public void setTitle(String title) {
    this.title = title;
}

public String getDesc() {
    return desc;
}

public void setDesc(String desc) {
    this.desc = desc;
}

public String getthumbnail() {
    return thumbnail;
}

public void setthumbnail(String thumbnail) {
    this.thumbnail = thumbnail;
}

public String getComment() {
    return comment;
}

public void setComment(String comment) {
    this.comment = comment;
}

public Date getTimestamp() {
    return timestamp;
}

public void setTimestamp(Date timestamp) {
    this.timestamp = timestamp;
}

}

这是Logcat:

java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/firebase/FirebaseApp$IdTokenListenersCountChangedListener;
    at com.google.firebase.auth.zzp.create(Unknown Source:3)
    at com.google.firebase.components.ComponentRuntime.lambda$new[=13=](com.google.firebase:firebase-components@@16.0.0:69)
    at com.google.firebase.components.ComponentRuntime$$Lambda.get(Unknown Source:4)
    at com.google.firebase.components.Lazy.get(com.google.firebase:firebase-components@@16.0.0:53)
    at com.google.firebase.components.ComponentRuntime.initializeEagerComponents(com.google.firebase:firebase-components@@16.0.0:158)
    at com.google.firebase.FirebaseApp.initializeAllApis(com.google.firebase:firebase-common@@19.3.0:563)
    at com.google.firebase.FirebaseApp.initializeApp(com.google.firebase:firebase-common@@19.3.0:304)
    at com.google.firebase.FirebaseApp.initializeApp(com.google.firebase:firebase-common@@19.3.0:268)
    at com.google.firebase.FirebaseApp.initializeApp(com.google.firebase:firebase-common@@19.3.0:253)
    at com.google.firebase.provider.FirebaseInitProvider.onCreate(com.google.firebase:firebase-common@@19.3.0:51)
    at android.content.ContentProvider.attachInfo(ContentProvider.java:2118)
    at android.content.ContentProvider.attachInfo(ContentProvider.java:2092)
    at com.google.firebase.provider.FirebaseInitProvider.attachInfo(com.google.firebase:firebase-common@@19.3.0:45)
    at android.app.ActivityThread.installProvider(ActivityThread.java:7189)
    at android.app.ActivityThread.installContentProviders(ActivityThread.java:6672)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6567)
    at android.app.ActivityThread.access00(ActivityThread.java:224)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1887)
    at android.os.Handler.dispatchMessage(Handler.java:107)
    at android.os.Looper.loop(Looper.java:224)
    at android.app.ActivityThread.main(ActivityThread.java:7562)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
 Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.firebase.FirebaseApp$IdTokenListenersCountChangedListener" on path: DexPathList[[zip file "/data/app/com.starboxlabs.blog-QZgPrUKlYwdoP5giIV2iqQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.starboxlabs.blog-QZgPrUKlYwdoP5giIV2iqQ==/lib/arm64, /system/lib64, /system/product/lib64]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:230)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
    at com.google.firebase.auth.zzp.create(Unknown Source:3) 
    at com.google.firebase.components.ComponentRuntime.lambda$new[=13=](com.google.firebase:firebase-components@@16.0.0:69) 
    at com.google.firebase.components.ComponentRuntime$$Lambda.get(Unknown Source:4) 
    at com.google.firebase.components.Lazy.get(com.google.firebase:firebase-components@@16.0.0:53) 
    at com.google.firebase.components.ComponentRuntime.initializeEagerComponents(com.google.firebase:firebase-components@@16.0.0:158) 
    at com.google.firebase.FirebaseApp.initializeAllApis(com.google.firebase:firebase-common@@19.3.0:563) 
    at com.google.firebase.FirebaseApp.initializeApp(com.google.firebase:firebase-common@@19.3.0:304) 
    at com.google.firebase.FirebaseApp.initializeApp(com.google.firebase:firebase-common@@19.3.0:268) 
    at com.google.firebase.FirebaseApp.initializeApp(com.google.firebase:firebase-common@@19.3.0:253) 
    at com.google.firebase.provider.FirebaseInitProvider.onCreate(com.google.firebase:firebase-common@@19.3.0:51) 
    at android.content.ContentProvider.attachInfo(ContentProvider.java:2118) 
    at android.content.ContentProvider.attachInfo(ContentProvider.java:2092) 
    at com.google.firebase.provider.FirebaseInitProvider.attachInfo(com.google.firebase:firebase-common@@19.3.0:45) 
    at android.app.ActivityThread.installProvider(ActivityThread.java:7189) 
    at android.app.ActivityThread.installContentProviders(ActivityThread.java:6672) 
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6567) 
    at android.app.ActivityThread.access00(ActivityThread.java:224) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1887) 
    at android.os.Handler.dispatchMessage(Handler.java:107) 
    at android.os.Looper.loop(Looper.java:224) 
    at android.app.ActivityThread.main(ActivityThread.java:7562) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950) 

2021-08-15 13:11:44.590 28344-28344/com.starboxlabs.blog E/MQSEventManagerDelegate: failed to get MQSService.

编辑

我的项目级别Gradle文件: https://pastebin.com/b2nJV4Qx(输入到 Whosebug 问题页面的代码无法正常工作)。

我的模块级别Gradle文件:

    repositories {
        maven { url 'https://maven.fabric.io/public' }
    }

    dependencies {
        classpath 'io.fabric.tools:gradle:1.+'
    }
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'

repositories {
    maven { url 'https://maven.fabric.io/public' }
}


android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.starboxlabs.blog"
        minSdkVersion 23
        targetSdkVersion 28
        versionCode 2
        vectorDrawables.useSupportLibrary = true
        versionName "1.1.4"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

        packagingOptions {
            exclude 'META-INF/DEPENDENCIES'
            exclude 'META-INF/LICENSE'
            exclude 'META-INF/LICENSE.txt'
            exclude 'META-INF/license.txt'
            exclude 'META-INF/NOTICE'
            exclude 'META-INF/NOTICE.txt'
            exclude 'META-INF/notice.txt'
            exclude 'META-INF/ASL2.0'
            exclude 'META-INF/rxjava.properties'
        }
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8


        }


    }
    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    //noinspection GradleCompatible
    implementation 'androidx.appcompat:appcompat:1.0.0'
    implementation 'com.google.android.material:material:1.0.0'


    implementation 'id.zelory:compressor:2.1.0'
    implementation 'de.hdodenhof:circleimageview:3.0.0'
    implementation 'com.github.markushi:circlebutton:1.1'
    implementation 'com.github.bumptech.glide:glide:4.9.0'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0-beta01'
    implementation 'com.google.firebase:firebase-messaging:17.3.2'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
    implementation 'me.zhanghai.android.materialprogressbar:library:1.6.1'
    api 'com.theartofdev.edmodo:android-image-cropper:2.8.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.google.firebase:firebase-auth:16.1.0'
    implementation 'com.google.firebase:firebase-core:16.0.7'
    implementation 'com.google.firebase:firebase-storage:16.0.5'
    implementation 'com.google.firebase:firebase-firestore:18.0.1'
    implementation 'com.firebaseui:firebase-ui-firestore:6.2.0' // FirebaseUI
    implementation 'com.google.firebase:firebase-analytics'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.2-alpha01'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.2-alpha01'
    implementation "com.mikepenz:materialdrawer:6.1.2"
    implementation "androidx.recyclerview:recyclerview:1.0.0"
    implementation "androidx.annotation:annotation:1.0.2"
    implementation 'com.android.support:design:28.0.0'
    implementation "androidx.constraintlayout:constraintlayout:1.1.3"
    implementation 'androidx.cardview:cardview:1.0.0'
    implementation 'com.github.whalemare:sheetmenu:1.0'
    implementation 'com.github.jd-alexander:LikeButton:0.2.3'

    // third party dependencies -------------------------------------------------------------------
    implementation 'com.mikhaellopez:circularimageview:3.2.0'          // circle image view
    implementation 'com.thefinestartist:finestwebview:1.2.7'
    implementation 'uk.co.samuelwall:material-tap-target-prompt:2.14.0'
    implementation 'com.squareup.picasso:picasso:2.71828'
    implementation 'com.intuit.sdp:sdp-android:1.0.6'
    implementation 'com.klinkerapps:drag-dismiss-activity:1.6.1'
    compile('com.crashlytics.sdk.android:crashlytics:2.9.9@aar') {
        transitive = true;
    }
    implementation 'androidx.viewpager:viewpager:1.0.0'
    implementation 'com.airbnb.android:lottie:3.6.0' // lottie animations
    implementation 'com.zolad:zoominimageview:1.0.0' // Zoom in ImageView
    implementation 'com.google.android.play:core:1.10.0' // In-App Updates
    implementation 'jp.wasabeef:richeditor-android:2.0.0' // Text Editor
    implementation 'org.sufficientlysecure:html-textview:4.0' // Html Text View


}

apply plugin: 'com.google.gms.google-services'
com.google.gms.googleservices.GoogleServicesPlugin.config.disableVersionCheck = true```

您需要将 firebase 依赖项更新到最新版本。将以下行添加到应用级别 gradle。从所有依赖项中删除所有版本代码,如下所示 -

您可以关注linkFirebase

  implementation platform('com.google.firebase:firebase-bom:28.3.1')
  // When using the BoM, you don't specify versions in Firebase library 
  //dependencies

 // Declare the dependency for the Firebase SDK for Google Analytics
 implementation 'com.google.firebase:firebase-messaging'
 implementation 'com.google.firebase:firebase-auth'
 implementation 'com.google.firebase:firebase-core'
 implementation 'com.google.firebase:firebase-storage'
 implementation 'com.google.firebase:firebase-firestore'
 implementation 'com.firebaseui:firebase-ui-firestore' 

 implementation 'com.google.firebase:firebase-analytics'