如何在Flutter的pubspec.yaml中配置无冲突的Firebase依赖
解决Flutter Firebase依赖冲突及编译错误方案
一、无冲突的依赖版本组合
直接把下面的依赖块复制到你的pubspec.yaml里,版本都是经过验证兼容的:
dependencies: flutter: sdk: flutter firebase_core: ^2.15.0 cloud_firestore: ^4.9.0 firebase_auth: ^4.10.0 firebase_storage: ^11.2.0 firebase_messaging: ^14.6.0 geoflutterfire: ^3.2.2
对应SDK版本要求
- Android(
android/app/build.gradle):- compileSdkVersion 33
- minSdkVersion 21
- targetSdkVersion 33
- gradle插件版本用
classpath 'com.android.tools.build:gradle:7.4.2'(与SDK版本匹配)
- iOS(
ios/Podfile):- 开头设置
platform :ios, '12.0'
- 开头设置
二、一步步配置流程
- 先清掉旧缓存,避免残留问题
执行这两条命令:flutter clean flutter pub cache clean - 替换pubspec里的依赖版本,然后执行
flutter pub get - 调整Android端配置
打开android/app/build.gradle,把compileSdk、minSdk、targetSdk改成上面指定的版本,同步调整gradle插件版本 - 调整iOS端配置
打开ios/Podfile修改平台版本,然后进入ios目录执行:
先解绑旧pod再重新安装,能解决大部分iOS端依赖冲突pod deintegrate pod install --repo-update - 解决剩余编译错误
FirebaseAppPlatform.verifyExtends找不到:完全是版本不兼容导致的,用上面的依赖组合就能解决,不用改代码FallThroughError未定义:这是Dart 3.0+移除了这个类,要么把Flutter SDK升到3.13.x及以上(对应Dart 3.1),要么把代码里的FallThroughError()替换成UnimplementedError(),或者直接删掉相关代码块
三、避坑提醒
- 所有Firebase库必须用同一大版本,比如firebase_core用2.x,其他Firebase库也得是适配2.x的版本,别混着3.x用
- geoflutterfire的版本要和Firebase库匹配,上面的3.2.2刚好适配Firebase 2.x系列
- 每次改完依赖,一定要清缓存再重新获取,不然旧版本文件会搞出各种奇怪问题
内容的提问来源于stack exchange,提问作者Gomes Ben
相关产品推荐
相关产品推荐

