使用Firebase Messaging包时Flutter项目运行Gradle报错求助
解决Flutter Firebase Cloud Messaging的Gradle构建错误
我来帮你搞定这个困扰你的Gradle构建问题,从报错信息来看,核心原因是旧版firebase_messaging依赖与Firebase核心库版本不兼容,再加上Gradle配置的一些遗留问题,一步步来修复:
1. 升级firebase_messaging依赖版本
你当前用的firebase_messaging: "^1.0.0"是非常老旧的版本,和app/build.gradle里的firebase-core:15.0.2完全不匹配,这是引发依赖解析冲突的主要原因。
打开你的pubspec.yaml,把firebase_messaging替换成兼容的稳定版:
dependencies: flutter: sdk: flutter firebase_messaging: ^7.0.3 # 这个版本与firebase-core 15.x系列完美兼容 cupertino_icons: ^0.1.0
2. 修复根目录build.gradle的配置问题
错误提示指向根目录android/build.gradle的第25行,大概率是Gradle插件版本或仓库顺序有问题:
- 必须让
google()仓库排在jcenter()前面(Google官方依赖优先从自家仓库拉取) - 升级Android Gradle插件和Google Services插件版本,匹配你的compileSdkVersion
修改根build.gradle的buildscript部分:
buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.2.1' // 对应compileSdkVersion 27的稳定版 classpath 'com.google.gms:google-services:4.2.0' // 和Firebase 15.x系列兼容的版本 } }
3. 用Firebase BOM统一依赖版本(可选但强烈推荐)
为了彻底避免Firebase各模块的版本冲突,你可以用Firebase的Bill of Materials(BOM)来统一管理所有Firebase依赖的版本,这样不用手动指定每个模块的版本号:
修改app/build.gradle的dependencies部分:
dependencies { // 引入Firebase BOM,自动统一所有Firebase依赖版本 implementation platform('com.google.firebase:firebase-bom:19.0.0') implementation 'com.google.firebase:firebase-core' // 无需再写版本号 testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.1' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' }
4. 清理缓存并重新构建
最后执行以下命令清理项目缓存,确保所有依赖重新拉取:
flutter clean cd android ./gradlew clean ./gradlew build --refresh-dependencies cd .. flutter run
错误原因补充说明
- 旧版
firebase_messaging:1.0.0内部还在使用已废弃的compile配置,导致Gradle抛出警告。 - 依赖版本不匹配让Gradle无法确定正确的依赖变体,从而出现
More than one variant of project :firebase_messaging matches the consumer attributes错误。
内容的提问来源于stack exchange,提问作者Kushal Kapoor
相关产品推荐
相关产品推荐

