You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Firebase BoM时是否需同步更新Gradle插件?能否仅声明BOM版本?

Firebase BoM与Gradle插件版本管理问题解答

你的操作没有错误

Firebase BoM的作用仅在于统一管理Firebase客户端依赖库的版本(比如你配置的firebase-crashlytics-ktx、firebase-perf-ktx这类运行时依赖),而Crashlytics、App Distribution、Performance对应的Gradle插件属于构建工具范畴,它们的版本和BoM版本是相互独立的,并不受BoM管控。所以每次更新BoM版本后,你确实需要单独同步这些插件的版本——这是Firebase的设计逻辑,不是操作失误。

无法仅通过BoM版本管控插件版本,但可优化管理方式

你没办法只声明BoM版本就自动同步插件版本,但可以通过以下方式简化版本维护:

  • 继续使用当前的libs.versions.toml集中管理所有版本:把插件版本和BoM版本在同一个文件里维护,更新时只需要修改这里的版本号,不用在多个build.gradle.kts文件中逐个修改,这已经是比较高效的方式。
  • 参考Firebase官方发布的兼容对应关系,在libs.versions.toml里手动绑定BoM版本和插件版本(官方会给出推荐版本),避免版本不兼容问题。

你当前的配置文件参考

libs.versions.toml

[versions]
firebaseBom = "33.0.0"
firebaseAppDistributionPlugin = "5.0.0"
firebaseCrashlyticsPlugin = "3.0.1"
firebasePerfPlugin = "1.4.2"

[libraries]
firebase-bom = { module = "com.google.firebase:firebase-bom", version.ref = "firebaseBom" }
firebase-analytics-ktx = { module = "com.google.firebase:firebase-analytics-ktx" }
firebase-crashlytics-ktx = { module = "com.google.firebase:firebase-crashlytics-ktx" }
firebase-messaging-ktx = { module = "com.google.firebase:firebase-messaging-ktx" }
firebase-perf-ktx = { module = "com.google.firebase:firebase-perf-ktx" }

[plugins]
firebase-appdistribution = { id = "com.google.firebase.appdistribution", version.ref = "firebaseAppDistributionPlugin" }
firebase-crashlytics = { id = "com.google.firebase.crashlytics", version.ref = "firebaseCrashlyticsPlugin" }
firebase-perf = { id = "com.google.firebase.firebase-perf", version.ref = "firebasePerfPlugin" }

项目级build.gradle.kts

plugins {
    alias(libs.plugins.firebase.appdistribution) apply false
    alias(libs.plugins.firebase.crashlytics) apply false
    alias(libs.plugins.firebase.perf) apply false
}

应用级build.gradle.kts

plugins {
    alias(libs.plugins.firebase.appdistribution)
    alias(libs.plugins.firebase.crashlytics)
    alias(libs.plugins.firebase.perf)
}

dependencies {
    implementation(platform(libs.firebase.bom))
    implementation(libs.firebase.analytics.ktx)
    implementation(libs.firebase.crashlytics.ktx) { isTransitive = true }
    implementation(libs.firebase.perf.ktx)
}

内容的提问来源于stack exchange,提问作者You Qi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 12:37:19