【问题标题】:A Firebase App named "[DEFAULT]" already exists已存在名为“[DEFAULT]”的 Firebase 应用
【发布时间】:2022-06-22 22:46:04
【问题描述】:

我的颤振应用程序与 firebase 集成,一切都很好,但是当我将 firebase 项目迁移到客户端 firebase 控制台时,添加了他的 google 服务文件,更改了 DefaultFirebaseOption.currentplatform 文件凭据,但每当我尝试运行我的应用程序时都会出错。 我的主要方法是这样的:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
  token = await FirebaseMessaging.instance.getToken();  
  Provider.debugCheckInvalidValueType = null;
  runApp(const MyApp());
}

错误是:

E/flutter (28330):[ERROR:flutter/lib/ui/ui_dart_state.cc(209)] 未处理的异常:[core/duplicate-app] 一个名为“[DEFAULT]”的 Firebase 应用已经存在。

我在这里搜索并从这里找到了solution,并像这样更新了我的主要方法:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
   if (Firebase.apps.isNotEmpty) {
     await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
   }else{
     Firebase.app()
   }
  //await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
  token = await FirebaseMessaging.instance.getToken();  
  Provider.debugCheckInvalidValueType = null;
  runApp(const MyApp());
}

但这次我没有收到任何错误,但我的应用程序 UI 没有显示,我只是看到黑屏。 我一直在尝试解决这个问题 4 到 5 个小时,但没有找到解决方案。任何帮助将不胜感激。

更新 我在两个场景中都提供了名称参数,并且我的应用程序在我第一次安装时运行良好,但是当我重新启动或关闭应用程序并重新运行它时,我遇到了与上述情况相同的错误。

【问题讨论】:

  • 我认为条件应该不同:``` if(Firebase.apps.isEmpty) { await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, ); } ```

标签: firebase flutter dart firebase-cloud-messaging


【解决方案1】:

我在使用 flutterfire CLI 按风味创建 Firebase 应用程序时遇到了类似的问题。我意识到 Flutterfire 在不同的项目中创建具有相同名称的应用程序。 然后我尝试了两种方法,效果很好。

  • 第一个:在每个 firebase 项目中手动更改应用名称。

  • 第二个:初始化时添加参数名称,例如在main_dev.dart中

     await Firebase.initializeApp(
     name: "dev project",
     options: DefaultFirebaseOptions.currentPlatform);
    

【讨论】:

  • 它与添加名称一起使用
【解决方案2】:

在使用 firebase 项目和升级软件包后遇到此错误。

修复者

flutter clean
flutter pub get

然后再次构建项目。

我在不同的项目中有同名的应用程序,这似乎不会导致错误。

【讨论】:

    【解决方案3】:

    在我的情况下,不正确的 GoogleService-Info.plist 从下载文件夹链接到 xCode。但正确的是在 Runner 文件夹中,所以我认为没关系。因此,请检查Build Phases -> Copy Bundle Resources 是否存在 GoogleService-Info.plist 并且路径是否正确。

    【讨论】:

      【解决方案4】:

      添加 name 参数是为了避免问题,但不能解决真正的问题。

      就我而言(Flutter),我一直在使用 firebase_options.dart 生成的文件,而每个 android 风格中仍然有一些旧的 google-services.json 文件目录

      android/app/src/<flavor>/google-services.json
      

      删除那些旧文件可以解决问题。

      在未删除的情况下手动删除 android/build 后进行“Flutter clean”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-17
        • 2023-03-31
        • 2019-10-26
        • 1970-01-01
        • 2019-05-22
        • 1970-01-01
        • 2017-09-05
        相关资源
        最近更新 更多