Flutter项目迁移后无法连接Cloud Firestore后端求助
Flutter迁移硬盘后Firestore无法连接(模拟器环境)
问题背景
在VSCode中开发Flutter项目,使用Firestore作为数据库,此前运行完全正常。更换新硬盘迁移所有文件后,项目编译无报错,但Firestore无法连接后端。已尝试更新所有依赖、执行Flutter Doctor检测(无异常),以及论坛上多种常规解决方案,均未解决问题。期间未修改业务代码,仅为修复问题调整过部分配置文件。
关键信息
- 测试环境:Android Studio模拟器,3款不同配置模拟器均出现相同问题:
- 预装Google Play服务的模拟器
- 未预装Google Play服务的模拟器
- 手动创建的无Google Play服务模拟器
- 项目旧版本构建包在多台真实设备上仍能正常访问Firestore数据库
报错日志
W/DynamiteModule( 6511): 未找到com.google.android.gms.providerinstaller.dynamite的本地模块描述符类。 I/DynamiteModule( 6511): 正在考虑本地模块com.google.android.gms.providerinstaller.dynamite:0和远程模块com.google.android.gms.providerinstaller.dynamite:0 W/ProviderInstaller( 6511): 加载providerinstaller模块失败:未找到可接受的com.google.android.gms.providerinstaller.dynamite模块。本地版本为0,远程版本为0。 W/ProviderInstaller( 6511): 无法上报请求统计:com.google.android.gms.common.security.ProviderInstallerImpl.reportRequestStats [class android.content.Context, long, long] W/Firestore( 6511): (24.2.2) [OnlineStateTracker]: 无法连接到Cloud Firestore后端。后端10秒内未响应。 W/Firestore( 6511): W/Firestore( 6511): 这通常表示当前设备网络连接不正常。客户端将进入离线模式,直到成功连接到后端。 W/DynamiteModule( 6511): 未找到com.google.android.gms.providerinstaller.dynamite的本地模块描述符类。 W/Firestore( 6511): (24.2.2) [WatchStream]: (4aed552) 流已关闭,状态:Status{code=UNAVAILABLE, description=调用了Channel shutdownNow, cause=null}。 I/DynamiteModule( 6511): 正在考虑本地模块com.google.android.gms.providerinstaller.dynamite:0和远程模块com.google.android.gms.providerinstaller.dynamite:0 W/ProviderInstaller( 6511): 加载providerinstaller模块失败:未找到可接受的com.google.android.gms.providerinstaller.dynamite模块。本地版本为0,远程版本为0。 W/ProviderInstaller( 6511): 无法上报请求统计:com.google.android.gms.common.security.ProviderInstallerImpl.reportRequestStats [class android.content.Context, long, long]
已尝试的解决方案
- 在所有AndroidManifest.xml文件中添加Firestore相关配置
- 启用Multidex
- 更换Wi-Fi网络
- 间隔24小时后重试
- 确认模拟器网络正常(可正常访问其他网络资源)
- 将项目最低SDK版本设置为21
环境配置信息
Flutter Doctor检测结果
[√] Flutter(稳定通道,3.3.0版本,运行于Microsoft Windows [版本10.0.19044.1889],区域设置en-US) • Flutter版本3.3.0,位于稳定通道,路径:D:\Coding\Flutter\flutter • 上游仓库:https://github.com/flutter/flutter.git • Framework修订版本:ffccd96b62(2天前),2022-08-29 17:28:57 -0700 • Engine修订版本:5e9e0e0aa8 • Dart版本:2.18.0 • DevTools版本:2.15.0 [√] Android工具链 - 开发Android设备(Android SDK版本33.0.0) • Android SDK路径:C:\Users\mjdk9\AppData\Local\Android\sdk • 平台:android-33,构建工具:33.0.0 • Java二进制文件路径:D:\Applications\Android Studio\jre\bin\java • Java版本:OpenJDK运行环境(build 11.0.12+7-b1504.28-7817840) • 已接受所有Android许可证。 [√] Chrome - 开发Web应用 • Chrome路径:C:\Program Files\Google\Chrome\Application\chrome.exe [√] Visual Studio - 开发Windows应用(Visual Studio Community 2022 17.3.3) • Visual Studio路径:C:\Program Files\Microsoft Visual Studio\2022\Community • Visual Studio Community 2022版本:17.3.32825.248 • Windows 10 SDK版本:10.0.19041.0 [√] Android Studio(版本2021.2) • Android Studio路径:D:\Applications\Android Studio • Flutter插件可从以下位置安装: https://plugins.jetbrains.com/plugin/9212-flutter • Dart插件可从以下位置安装: https://plugins.jetbrains.com/plugin/6351-dart • Java版本:OpenJDK运行环境(build 11.0.12+7-b1504.28-7817840) [√] 已连接设备(4台可用) • sdk gphone x86(移动设备) • emulator-5554 • android-x86 • Android 11(API 30)(模拟器) • Windows(桌面设备) • windows • windows-x64 • Microsoft Windows [版本10.0.19044.1889] • Chrome(Web设备) • chrome • web-javascript • Google Chrome 104.0.5112.102 • Edge(Web设备) • edge • web-javascript • Microsoft Edge 104.0.1293.70 [√] HTTP主机可用性 • 所有必需的HTTP主机均可访问 • 未发现任何问题!
pubspec.yaml依赖配置
dependencies: flutter: sdk: flutter # 以下依赖会将Cupertino Icons字体添加到你的应用中。 # 使用CupertinoIcons类可调用iOS风格图标。 cupertino_icons: ^1.0.2 firebase_core: ^1.4.0 firebase_auth: ^3.0.1 cloud_firestore: ^3.4.6 firebase_analytics: ^9.3.3 material_floating_search_bar: ^0.3.4 provider: ^6.0.3 flutter_launcher_icons: ^0.10.0 url_launcher: ^6.0.10 url_launcher_web: ^2.0.4 flutter_rating_bar: ^4.0.0 smooth_star_rating: ^1.1.1 dropdown_button2: ^1.0.7 confetti: ^0.7.0 flutter_native_splash: ^2.1.6 http: ^0.13.4 get: ^4.6.1 audioplayers: ^1.0.1 loader_overlay: ^2.0.6 webview_flutter: ^3.0.2 syncfusion_flutter_datagrid: ^20.1.61 cloud_functions: ^3.2.17
app/build.gradle配置
apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" apply plugin: 'com.google.gms.google-services' defaultConfig { multiDexEnabled true applicationId "com.mjdk99.matter_medical_supplies" minSdkVersion 21 targetSdkVersion 30 versionCode flutterVersionCode.toInteger() versionName flutterVersionName } dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation platform('com.google.firebase:firebase-bom:30.3.2') implementation 'com.google.firebase:firebase-analytics' implementation 'com.google.android.gms:play-services-location:18.0.0' }
根目录build.gradle配置
buildscript { ext.kotlin_version = '1.6.10' repositories { google() mavenCentral() jcenter() } dependencies { classpath 'com.google.gms:google-services:4.3.13' classpath 'com.android.tools.build:gradle:4.1.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } allprojects { repositories { google() mavenCentral() jcenter() } }
针对性解决方案
1. 检查并替换Firebase配置文件
迁移硬盘可能导致google-services.json文件丢失或损坏:
- 登录Firebase控制台,重新下载对应项目的
google-services.json文件 - 替换项目
android/app目录下的同名文件 - 执行
flutter clean后重新构建项目
2. 修复ProviderInstaller模块加载失败问题
报错核心为Google Play Services的ProviderInstaller模块缺失,针对模拟器环境:
- 打开Android SDK Manager,确保Google Play Services和Google Repository为最新版本
- 对于无Google Play服务的模拟器,在
app/build.gradle的dependencies中添加以下依赖:implementation 'com.google.android.gms:play-services-base:18.1.0' implementation 'com.google.android.gms:play-services-basement:18.1.0'
3. 升级Firebase依赖版本
当前Firebase依赖版本与Flutter 3.3.0存在兼容性差异:
- 更新pubspec.yaml中的Firebase相关依赖至稳定兼容版本,示例:
firebase_core: ^1.24.0 firebase_auth: ^4.1.0 cloud_firestore: ^4.4.0 firebase_analytics: ^10.1.0 cloud_functions: ^4.0.10 - 执行
flutter pub upgrade更新依赖,同步Gradle配置后重新构建
4. 重置模拟器缓存
模拟器缓存可能在迁移后出现异常:
- 打开Android Studio的Device Manager
- 选中目标模拟器,点击
Wipe Data重置设备 - 重启模拟器后重新运行项目
5. 升级Gradle版本兼容性
当前Gradle版本与Android SDK 33不兼容:
- 将根目录build.gradle中的
com.android.tools.build:gradle版本升级至7.0.0+,示例:classpath 'com.android.tools.build:gradle:7.2.0' - 修改
android/gradle/wrapper/gradle-wrapper.properties中的distributionUrl为对应版本:distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
内容的提问来源于stack exchange,提问作者mjdk99
相关产品推荐
相关产品推荐

