Flutter Firebase依赖版本冲突求助(firebase_messaging相关)
这个问题是典型的Firebase原生依赖版本冲突导致的——不同Flutter Firebase插件引入了版本不兼容的Android原生Firebase库,Gradle无法自动调和这些版本,因此抛出了依赖解析失败的错误。下面给你几个亲测有效的解决办法:
方法一:强制统一所有Firebase依赖版本
在Flutter项目的android/build.gradle文件中添加依赖版本强制策略,让所有插件使用同一版本的Firebase和Google Play Services库,彻底解决版本不匹配问题:
找到allprojects代码块,在其中的subprojects里加入如下配置:
allprojects { repositories { google() jcenter() } subprojects { project.configurations.all { resolutionStrategy.eachDependency { details -> // 统一所有Firebase依赖的版本 if (details.requested.group == 'com.google.firebase') { // 选择一个兼容的版本,比如19.0.0(可根据实际情况调整) details.useVersion '19.0.0' } // 统一Google Play Services依赖版本 if (details.requested.group == 'com.google.android.gms') { details.useVersion '17.0.0' } } } } }
方法二:升级firebase_messaging到兼容的新版本
你当前使用的firebase_messaging: ^5.1.4是较老旧的版本,它依赖的com.google.firebase:firebase-messaging:18.0.0和其他插件的Firebase版本冲突。建议升级到更高的稳定版本(比如^6.0.16,注意要和你其他Firebase插件版本兼容):
- 修改
pubspec.yaml中的firebase_messaging版本:
firebase_messaging: ^6.0.16
- 执行
flutter pub get更新依赖 - 清理项目缓存:
flutter clean - 重新运行项目:
flutter run
新版本的插件通常会更新依赖的原生库版本,和其他Firebase插件的兼容性更好。
方法三:手动对齐firebase-core版本
你的项目中同时存在手动添加的com.google.firebase:firebase-core:17.0.0和来自firebase_core插件的com.google.firebase:firebase-core:16.0.9依赖,这也是冲突的来源之一。可以手动调整android/app/build.gradle中的firebase-core版本,和插件依赖的版本保持一致:
将原来的:
implementation 'com.google.firebase:firebase-core:17.0.0'
修改为:
implementation 'com.google.firebase:firebase-core:16.0.9'
通用收尾步骤
无论使用哪种方法,修改配置后都建议执行以下步骤确保缓存清理干净:
- 运行
flutter clean - (可选)删除
android/.gradle文件夹 - 重新运行项目
内容的提问来源于stack exchange,提问作者Karel Debedts

