添加cloud_firestore依赖后Flutter项目构建失败求助
在Flutter项目中添加cloud_firestore: ^0.12.10依赖后,编译时出现依赖版本冲突错误。项目的pubspec.yaml依赖配置如下:
dependencies: url_launcher: ^5.0.0 flutter_launcher_icons: ^0.7.4 cloud_firestore: ^0.12.10 flutter: sdk: flutter cupertino_icons: ^0.1.2 firebase_messaging: ^5.1.6 dev_dependencies: flutter_test: sdk: flutter flutter_icons: android: "launcher_icon" ios: true image_path: "assets/launcher_icon/LauncherIcon.png"
执行flutter run时的错误输出:
Launching lib\main.dart on SM A505F in debug mode...
Initializing gradle... 1.1s
Resolving dependencies... 16.3s
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
FAILURE: Build failed with an exception.
- 出错原因:
Failed to notify dependency resolution listener.多个库请求com.google.android.gms:play-services-measurement-base库的版本为[[17.2.1,17.2.1]],但实际解析版本为16.5.0。请禁用插件并使用./gradlew :app:dependencies检查依赖树。
多个库请求com.google.firebase:firebase-iid库的版本为[[20.0.0,20.0.0]],但实际解析版本为17.1.2。请禁用插件并使用./gradlew :app:dependencies检查依赖树。
建议:
使用--stacktrace选项获取堆栈跟踪。
使用--info或--debug选项获取更多日志输出。
使用--scan选项获取完整分析信息。获取更多帮助:https://help.gradle.org
BUILD FAILED in 11s
Running Gradle task 'assembleDebug'...
Running Gradle task 'assembleDebug'... Done 11.8s
Gradle task assembleDebug failed with exit code 1
flutter doctor -v输出:
[√] Flutter (Channel stable, v1.9.1+hotfix.6, on Microsoft Windows [Version 10.0.18362.418], locale en-IN) • Flutter版本1.9.1+hotfix.6,路径为D:\flutter_windows_v1.9.1+hotfix.2-stable\flutter • Framework版本68587a0916(8周前),2019-09-13 19:46:58 -0700 • Engine版本b863200c37 • Dart版本2.5.0 [!] Android toolchain - 为Android设备开发(Android SDK版本29.0.2) • Android SDK路径为C:\Users\aditl\AppData\Local\Android\sdk • 未配置Android NDK位置(可选;对原生性能分析有用) • 平台android-29,build-tools 29.0.2 • Java二进制文件路径:C:\Program Files\Android\Android Studio\jre\bin\java • Java版本OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b03) ! 未接受部分Android许可证。解决方法:运行flutter doctor --android-licenses [√] Android Studio(版本3.5) • Android Studio路径为C:\Program Files\Android\Android Studio • Flutter插件版本41.0.2 • Dart插件版本191.8593 • Java版本OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b03) [√] VS Code(版本1.40.0) • VS Code路径为C:\Users\aditl\AppData\Local\Programs\Microsoft VS Code • Flutter扩展版本3.6.0 [√] 已连接设备(1台可用) • SM A505F • RZ8M60LFVPP • android-arm64 • Android 9 (API 28) ! 检测到1个类别存在问题。
这个问题的核心是Firebase相关依赖的版本不兼容:你使用的firebase_messaging: ^5.1.6是较旧的版本,它依赖的Google Play服务、Firebase IID库版本,和cloud_firestore: ^0.12.10要求的版本不一致,导致Gradle无法自动统一版本,从而编译失败。可以通过以下步骤解决:
1. 更新firebase_messaging到兼容版本
将pubspec.yaml中的firebase_messaging版本升级到和cloud_firestore: ^0.12.10兼容的版本,比如^6.0.16:
dependencies: # ...其他依赖保持不变 firebase_messaging: ^6.0.16
2. 强制Gradle统一依赖版本(可选,若步骤1后仍有问题)
如果更新依赖后还是出现版本冲突,可以在android/build.gradle文件的allprojects块中添加强制版本的配置,确保所有依赖使用相同的库版本:
allprojects { repositories { google() jcenter() } // 添加这段配置 configurations.all { resolutionStrategy { force 'com.google.android.gms:play-services-measurement-base:17.2.1' force 'com.google.firebase:firebase-iid:20.0.0' } } }
3. 清理缓存并重新构建
执行以下命令清理项目缓存,重新获取依赖并编译:
flutter clean flutter pub get flutter run
额外建议
你的Flutter版本(v1.9.1+hotfix.6)比较老旧,虽然上面的方法能解决当前问题,但长期来看建议升级到较新的稳定版Flutter,这样依赖生态的兼容性会更好,也能获得更多新特性和Bug修复。
内容的提问来源于stack exchange,提问作者Adit Luhadia

