Flutter/Dart - FlutterFirebaseMessagingPlugin.java - 构建失败,出现异常“error: cannot find symbol”。

17

升级到Null Safety sdk: ">=2.12.0 <3.0.0" 后,我在Android Studio中尝试构建Flutter应用程序时遇到了错误。

C:\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_messaging-9.1.4\android\src\main\java\io\flutter\plugins\firebase\messaging\FlutterFirebaseMessagingPlugin.java:20: error: cannot find symbol
    import com.google.firebase.iid.FirebaseInstanceId;
                                  ^
      symbol:   class FirebaseInstanceId
      location: package com.google.firebase.iid
    C:\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_messaging-9.1.4\android\src\main\java\io\flutter\plugins\firebase\messaging\FlutterFirebaseMessagingPlugin.java:21: error: cannot find symbol
    import com.google.firebase.iid.Metadata;
                                  ^
      symbol:   class Metadata
      location: package com.google.firebase.iid
    C:\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_messaging-9.1.4\android\src\main\java\io\flutter\plugins\firebase\messaging\FlutterFirebaseMessagingPlugin.java:152: error: cannot find symbol
                      : Metadata.getDefaultSenderId(FirebaseApp.getInstance());
                        ^
      symbol:   variable Metadata
      location: class FlutterFirebaseMessagingPlugin
    C:\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_messaging-9.1.4\android\src\main\java\io\flutter\plugins\firebase\messaging\FlutterFirebaseMessagingPlugin.java:153: error: cannot find symbol
              FirebaseInstanceId.getInstance().deleteToken(senderId, "*");
              ^
      symbol:   variable FirebaseInstanceId
      location: class FlutterFirebaseMessagingPlugin
    C:\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_messaging-9.1.4\android\src\main\java\io\flutter\plugins\firebase\messaging\FlutterFirebaseMessagingPlugin.java:165: error: cannot find symbol
                      : Metadata.getDefaultSenderId(FirebaseApp.getInstance());
                        ^
      symbol:   variable Metadata
      location: class FlutterFirebaseMessagingPlugin
    C:\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_messaging-9.1.4\android\src\main\java\io\flutter\plugins\firebase\messaging\FlutterFirebaseMessagingPlugin.java:166: error: cannot find symbol
              String token = FirebaseInstanceId.getInstance().getToken(senderId, "*");
                             ^
      symbol:   variable FirebaseInstanceId
      location: class FlutterFirebaseMessagingPlugin

Android Studio告诉我FlutterFirebaseMessagingPlugin.java中“找不到符号”。那这意味着什么,我该如何修复它?


1
你找到任何解决方案了吗? - Anchal Singh
我尝试使用fork和clone来更改pubspec.yaml中过时的依赖项。但这是我第一次尝试,我不明白为什么"pub get"没有将插件下载到我的Flutter应用程序的外部库文件夹中。 - Meggy
插件的创建者/维护者刚刚更新了插件到版本3.05。 - Meggy
3个回答

41

将pushpec.yaml中的firebase_messaging更新到支持null-safety的版本(例如:firebase_messaging:^10.0.0),并在终端中调用flutter pub get


我在 pubspec.yaml 中使用了最新的 fcm_config: 3.0.4,其中必须包含 firebase_messaging-9.1.4。但是我不知道如何升级它。 - Meggy
当我执行 pub outdated 命令时,我会得到以下过时的传递依赖项。但是,正如我所说,我不知道如何升级它:firebase_messaging *9.1.4 *9.1.4 *9.1.4 10.0.0
firebase_messaging_platform_interface *2.1.4 *2.1.4 *2.1.4 3.0.0
firebase_messaging_web *1.0.7 *1.0.7 *1.0.7 2.0.0
- Meggy
我尝试fork原始存储库并更新pubspec.yaml以包含新的firebase更新,但是"pub get"告诉我没有pubspec.yaml。 - Meggy
似乎克隆存储库会让我停留在比pubspec.yaml所在的目录高一级的位置。你有什么想法可以让我指向上一级目录吗?这是入口; fcm_config: git: url: "https://github.com/meghead/fcm_config.git" - Meggy
这对我有用..谢谢先生。起初我在pubspec.aml文件中使用firebase_messaging:,但它会抛出错误。但是在添加了最新版本号后,它就可以工作了,firebase_messaging: ^10.0.6 - ali sampson
显示剩余4条评论

2

首先,从pub.dev获取firebase依赖的最新版本。

运行以下命令:

flutter pub upgrade
flutter pub get
flutter clean

清除缓存并重启

然后尝试运行应用程序


1
对我来说,问题出在我将 androidx 核心版本从 1.0.1 更新到 1.5.0,在 app/gradle 文件中更新了它,但我没有在项目级别的 gradle 文件中的 resolutionStrategy 中更新它。

enter image description here

enter image description here

他们应该是一样的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接