求助:Firebase出现重复类FirebaseInstanceIdReceiver依赖冲突问题
解决FCM依赖冲突:重复类
FirebaseInstanceIdReceiver问题 问题根源
从Firebase Messaging 21.0.0版本开始,独立的firebase-iid库已经被合并到firebase-messaging核心库中。你的项目同时引入了旧版独立firebase-iid:20.1.5和新版firebase-messaging:23.1.1,导致两个库包含相同的com.firebase.iid.FirebaseInstanceIdReceiver类,引发冲突。
解决步骤
1. 移除独立的firebase-iid依赖
打开模块级build.gradle文件,找到并删除单独引入的com.google.firebase:firebase-iid:20.1.5依赖项——新版firebase-messaging已经包含了该库的所有功能,无需单独引入。
2. 统一Firebase Messaging版本
确保firebase-messaging使用兼容的稳定版本,并且和项目中其他Firebase组件版本保持一致。示例配置:
dependencies { // 仅保留firebase-messaging依赖 implementation 'com.google.firebase:firebase-messaging:23.1.1' // 其他Firebase组件版本需与messaging匹配 implementation 'com.google.firebase:firebase-core:21.1.1' }
3. 强制统一Firebase组件版本(可选)
如果项目包含多个Firebase组件,为避免版本不一致引发的潜在问题,可在项目根目录的build.gradle中添加版本统一规则:
buildscript { dependencies { // 使用最新版Google Services插件 classpath 'com.google.gms:google-services:4.3.15' } } allprojects { repositories { google() mavenCentral() } configurations.all { resolutionStrategy { // 强制所有Firebase组件使用指定版本 force 'com.google.firebase:firebase-messaging:23.1.1' force 'com.google.firebase:firebase-core:21.1.1' } } }
4. 清理缓存并重构项目
执行以下操作确保旧依赖缓存被清除:
- 在Android Studio中点击
File > Invalidate Caches... > Invalidate and Restart - 或在终端运行命令:
./gradlew clean build
额外排查(若问题仍存在)
如果冲突依旧,检查是否有第三方依赖间接引入了旧版firebase-iid。可通过终端命令查看完整依赖树:
./gradlew dependencies
找到引入旧版firebase-iid的依赖后,使用exclude规则移除:
implementation('第三方依赖组:依赖名称:版本') { exclude group: 'com.google.firebase', module: 'firebase-iid' }
内容的提问来源于stack exchange,提问作者Vishal P
相关产品推荐
相关产品推荐

