Firebase BoM 34.7.0 下 KTX 依赖为何无法解析?
结论
问题出在依赖坐标。Firebase BoM 从 34.0.0 起不再包含 Firebase KTX 模块,但配置中的 Analytics、Auth、Firestore 仍使用 -ktx 后缀。这些别名没有单独指定版本,BoM 也不再为它们提供版本约束,因此 Gradle 会尝试解析 firebase-analytics-ktx:. 这类没有版本号的坐标。清理缓存无法补上缺失的版本约束。
Kotlin 项目应改用 Firebase 主模块,KTX API 已迁入相应模块。Firebase 官方文档列出的依赖名称是 firebase-analytics、firebase-auth 和 firebase-firestore。Firebase Android 设置文档 KTX 迁移指南
修改版本目录
在 libs.versions.toml 中,将 Firebase 库名称改为主模块。Vertex AI in Firebase 当前对应的模块名是 firebase-ai:
[versions]
firebaseBom = "34.7.0"
[libraries]
firebase-bom = { group = "com.google.firebase", name = "firebase-bom", version.ref = "firebaseBom" }
firebase-analytics = { group = "com.google.firebase", name = "firebase-analytics" }
firebase-auth = { group = "com.google.firebase", name = "firebase-auth" }
firebase-firestore = { group = "com.google.firebase", name = "firebase-firestore" }
firebase-ai = { group = "com.google.firebase", name = "firebase-ai" }
Firebase 官方现行 Android 库列表将 Firebase AI Logic 列为 com.google.firebase:firebase-ai。该产品之前称为 Vertex AI in Firebase。Firebase Android 库列表
然后在 build.gradle.kts 中引用对应别名:
dependencies {
implementation(platform(libs.firebase.bom))
implementation(libs.firebase.analytics)
implementation(libs.firebase.auth)
implementation(libs.firebase.firestore)
implementation(libs.firebase.ai)
}
使用 BoM 时,Firebase 库通常无需在别名中另行填写版本。BoM 管理其支持的模块版本,版本目录中的 version.ref 则用于声明 BoM 自身的版本。
检查 Kotlin 导入
如果代码使用旧 KTX 模块中的扩展导入,也要按照迁移指南改用主模块中的 API。例如,旧导入:
import com.google.firebase.ktx.Firebase
import com.google.firebase.auth.ktx.auth
import com.google.firebase.firestore.ktx.firestore
应改为:
import com.google.firebase.Firebase
import com.google.firebase.auth.auth
import com.google.firebase.firestore.firestore
具体导入取决于代码实际使用的 API。在 Kotlin 中调用这些扩展不需要使用旧的 -ktx artifact。
如果仍然无法解析
改正 artifact 名称后如果仍有解析错误,检查项目的依赖仓库配置是否包含 google() 和 mavenCentral(),并确认 Firebase BoM 别名是通过 implementation(platform(...)) 引入的。题目给出的日志中,错误坐标以冒号和句点结尾,说明 Firebase 依赖没有获得版本。结合 BoM 版本和 -ktx 名称,应先改用受 BoM 管理的主模块。
备注:内容仅供参考。
