使用Firebase Kotlin SDK读取Firestore集合时遭遇ClassNotFoundException
问题:Firestore读取时抛出ClassNotFoundException
已在Gradle中添加所需依赖,且通过自定义token完成登录,但读取Firestore集合时出现以下异常:
Caused by: java.lang.ClassNotFoundException: Didn't find class "dev.gitlive.firebase.DecodersKt"
共享模块Gradle依赖:
val commonMain by getting { dependencies { implementation(libs.kotlinx.coroutines.core) implementation(libs.ktor.client.core) implementation(libs.ktor.client.content.negotiation) implementation(libs.ktor.serialization.kotlinx.json) implementation(libs.ktor.client.logging) implementation(libs.koin.core) implementation(libs.sql.coroutines.extensions) implementation(libs.firebase.firestore) implementation(libs.firebase.common) implementation(libs.kotlinx.serialization.json) implementation(libs.firebase.auth) } }
Android模块Gradle依赖:
dependencies { implementation(projects.shared) implementation(libs.compose.ui) implementation(libs.compose.ui.tooling.preview) implementation(libs.compose.material3) implementation(libs.androidx.activity.compose) implementation(libs.androidx.appcompat) implementation(libs.androidx.constraintlayout) implementation(libs.material) implementation(libs.androidx.lifecycle.livedata.ktx) implementation(libs.androidx.lifecycle.viewmodel.ktx) implementation(libs.androidx.navigation.fragment.ktx) implementation(libs.androidx.navigation.ui.ktx) debugImplementation(libs.compose.ui.tooling) implementation(libs.koin.android) implementation(platform(libs.google.firebase.bom)) implementation(libs.firebase.common.ktx) implementation(libs.google.firebase.common) }
调用代码:
tokenResponse = auth.signInWithCustomToken(customtoken) val response = firestore.collection("collectionPath") .document("documentPath").get().data(MyDataClass.serializer()) println("response... $response")
解决建议
- 统一Firebase Kotlin SDK版本:确保共享模块中
firebase-firestore、firebase-common、firebase-auth使用完全一致的版本,版本不匹配是类缺失的常见原因。 - Android模块补充序列化依赖:在Android模块的dependencies中添加
implementation(libs.kotlinx.serialization.json),避免跨模块依赖传递不完整。 - 移除冲突的Firebase依赖:Android模块同时引入
firebase.common.ktx和google.firebase.common,二者存在冲突,保留firebase.common.ktx即可。 - 清理构建缓存:执行
./gradlew clean后重新同步Gradle,清除缓存中可能存在的依赖加载异常。 - 检查Firebase初始化:确保应用启动时使用Firebase Kotlin SDK的初始化逻辑,而非原生Android Firebase的初始化方式。
内容的提问来源于stack exchange,提问作者user320676
相关产品推荐
相关产品推荐

