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

Flutter集成Firebase Messaging报错:找不到FirebaseInstanceId符号

解决Firebase Messaging编译错误(找不到FirebaseInstanceId符号)

核心原因

firebase_messaging 9.x版本与新版Firebase SDK存在API兼容性冲突,FirebaseInstanceId在新版Firebase中已被废弃,相关功能迁移至FirebaseMessaging类,但旧插件版本仍在调用废弃API,导致编译失败。

解决办法

方法1:升级firebase_messaging到兼容版本

这是最稳妥的解决方案,直接将插件升级到适配新版Firebase SDK的版本,建议升级到10.0.0及以上:

  • 修改项目根目录下pubspec.yaml中的依赖配置:
    firebase_messaging: ^10.0.0 # 可替换为更高稳定版本
    
  • 执行命令更新依赖:
    flutter pub get
    
  • 清理缓存并重新构建项目:
    flutter clean
    flutter run
    

方法2:降级Firebase核心SDK(临时应急方案)

如果暂时无法升级插件,可在安卓项目的android/build.gradle文件中指定旧版Firebase核心依赖,强制使用兼容FirebaseInstanceId的版本:

  • 在buildscript的dependencies代码块中添加:
    classpath 'com.google.firebase:firebase-core:17.5.0'
    classpath 'com.google.firebase:firebase-messaging:20.2.4'
    
  • 同步Gradle配置后重新运行项目。

方法3:手动修改插件代码(不推荐,维护成本高)

找到本地插件存储路径中的FlutterFirebaseMessagingPlugin.java文件(通常路径为~/.pub-cache/hosted/pub.dartlang.org/firebase_messaging-9.1.4/android/src/main/java/io/flutter/plugins/firebase/messaging/FlutterFirebaseMessagingPlugin.java),将第166行代码替换为新版API:

// 原代码
String token = FirebaseInstanceId.getInstance().getToken(senderId, "*");
// 替换为
String token = FirebaseMessaging.getInstance().getToken().getResult();

注意:该修改会在插件更新后被覆盖,仅适合临时解决问题。


内容的提问来源于stack exchange,提问作者Bart

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 06:20:44