You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter报Firebase初始化MissingPluginException错误如何解决

Flutter Firebase初始化MissingPluginException问题排查方案

问题报错日志

Performing hot restart...
Syncing files to device sdk gphone64 x86 64...
Restarted application in 1,035ms.
E/flutter ( 6967): [ERROR:flutter/lib/ui/ui_dart_state.cc(198)] Unhandled Exception: MissingPluginException(No implementation found for method Firebase#initializeCore on channel plugins.flutter.io/firebase_core)
E/flutter ( 6967): #0      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:165:7)
E/flutter ( 6967): <asynchronous suspension>
E/flutter ( 6967): #1      MethodChannel.invokeListMethod (package:flutter/src/services/platform_channel.dart:353:35)
E/flutter ( 6967): <asynchronous suspension>
E/flutter ( 6967): #2      MethodChannelFirebase._initializeCore (package:firebase_core_platform_interface/src/method_channel/method_channel_firebase.dart:31:23)
E/flutter ( 6967): <asynchronous suspension>
E/flutter ( 6967): #3      MethodChannelFirebase.initializeApp (package:firebase_core_platform_interface/src/method_channel/method_channel_firebase.dart:73:7)
E/flutter ( 6967): <asynchronous suspension>
E/flutter ( 6967): #4      Firebase.initializeApp (package:firebase_core/src/firebase.dart:40:31)
E/flutter ( 6967): <asynchronous suspension>
E/flutter ( 6967): #5      main (package:firebase_test/main.dart:20:3)
E/flutter ( 6967): <asynchronous suspension>

已确认的前置信息

  • 采用官方标准写法初始化Firebase,代码如下:
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
  options: DefaultFirebaseOptions.currentPlatform,
);
  • 触发场景:修改pubspec.yaml中应用图标、启动页资源配置后突发问题,回退原有图片资源后故障未消失
  • 已尝试的无效操作:
    • 热重启、重启应用、重启Android Studio、重启模拟器
    • 调整app层级build.gradle的release构建配置,先后修改过代码混淆开关、资源压缩开关、签名配置
    • 执行flutter doctor、flutter doctor -v未检测到环境异常
    • 初步怀疑故障与firebase_core 1.19.0版本有关

排查解决步骤(按优先级从高到低执行)

  • 优先执行全量清理构建:Firebase属于带原生实现的插件,原生侧注册逻辑仅在应用冷启动全量构建时加载,热重载、热重启不会重新链接原生插件,修改pubspec配置、原生配置、资源后必须执行以下命令:
# 清理所有历史构建缓存
flutter clean
# 重新拉取依赖
flutter pub get
# 先手动杀掉模拟器/真机上正在运行的旧应用进程,再执行全量构建启动
flutter run
  • 核对Android端包名一致性:修改应用图标、启动页的第三方脚本可能自动篡改Android配置,需确认以下4个位置的包名完全匹配:
    • android/app/src/main/AndroidManifest.xml中manifest根节点的package属性值
    • android/app/build.gradle中defaultConfig节点下的applicationId值
    • android/app/src/main/kotlin(或java)/对应包名目录/MainActivity文件内的包名声明
    • 项目根目录下google-services.json中client[0].client_info.android_client_info.package_name字段值
  • 检查Firebase原生插件配置完整性:修改构建配置时容易误删Google服务插件引用,需核对两处配置:
    1. 项目根目录下android/build.gradle的buildscript依赖中存在Google服务插件:
    buildscript {
      dependencies {
        // 版本号可根据官方兼容表调整,必须存在该依赖
        classpath 'com.google.gms:google-services:4.3.13'
      }
    }
    
    1. app层级android/app/build.gradle文件最末尾存在插件应用配置(该配置不能放在文件头部):
    apply plugin: 'com.google.gms.google-services'
    
  • 规避已知问题版本:若上述操作无效,先在pubspec.yaml中锁定firebase_core版本,避开1.19.0版本的已知原生注册bug:
dependencies:
  flutter:
    sdk: flutter
  firebase_core: 1.18.0

修改后重新执行全量清理构建流程即可。

  • Android 12+兼容适配:若使用Android 12及以上版本的模拟器/真机,需确认AndroidManifest.xml中所有Firebase相关组件都配置了android:exported="true"属性,同时application节点下存在Flutter嵌入配置:
<meta-data
  android:name="flutterEmbedding"
  android:value="2" />

内容的提问来源于stack exchange,提问作者Feynman's Plotter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 01:06:23