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

升级Firebase库至16.0.0引发Google Play服务依赖问题

解决Gradle冲突:Program type already present & 无法解析GMS库版本

这个问题我之前也踩过坑,核心原因是旧版OneSignal Gradle插件(0.8.1)和google-services 4.0.0的适配bug——旧插件会强制把Google Play Services(GMS)库版本和Firebase版本绑定,但当时Firebase 16.0.0发布时,很多GMS库还没推出对应的16.0.0版本,直接导致了两类错误:先是重复类冲突,后是依赖拉取失败。

下面是一步步的解决方法:

1. 升级OneSignal Gradle插件到兼容版本

旧版0.8.1的插件逻辑有问题,会无视你的配置强制修改GMS版本。把项目根目录的build.gradle里的OneSignal插件版本更新到至少0.11.0以上(推荐用0.12.6,这个版本和google-services 4.x完全兼容):

buildscript {
    dependencies {
        // 替换旧的插件版本
        classpath 'gradle.plugin.com.onesignal:onesignal-gradle-plugin:0.12.6'
        // 其他依赖保持不变
    }
}

2. 强制指定所有GMS和Firebase的有效版本

在应用模块的build.gradle的android块中添加resolutionStrategy,强制指定实际存在的稳定版本(注意:16.0.0版本的GMS库大多不存在,要换成已发布的版本):

android {
    // ... 你的现有配置(compileSdk、defaultConfig等) ...

    configurations.all {
        resolutionStrategy {
            // 强制GMS库使用存在的稳定版本
            force 'com.google.android.gms:play-services-maps:16.1.0'
            force 'com.google.android.gms:play-services-location:16.0.0'
            force 'com.google.android.gms:play-services-places:16.0.0'
            force 'com.google.android.gms:play-services-base:16.1.0'
            force 'com.google.android.gms:play-services-basement:16.2.0'
            force 'com.google.android.gms:play-services-tasks:16.0.1'
            
            // 同步Firebase版本到兼容的稳定版
            force 'com.google.firebase:firebase-core:16.0.8'
            force 'com.google.firebase:firebase-invites:16.1.0'
        }
    }
}

3. 清理缓存并重建项目

这一步不能少,避免旧缓存干扰新配置:

  • 执行终端命令:./gradlew clean(Windows用户用gradlew clean)
  • 重启Android Studio,点击File -> Invalidate Caches / Restart
  • 等待缓存重建完成后,重新构建项目

为什么之前的resolutionStrategy无效?

因为旧版OneSignal插件的优先级比你的自定义配置更高,它会在你设置完之后再次修改版本。升级插件后,它会尊重你的版本强制规则,不会再乱改GMS版本了。

内容的提问来源于stack exchange,提问作者Qandeel Abbassi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:18:25