名为“[DEFAULT]”的 Firebase 应用已存在

K_C*_*dio 39 dart firebase flutter firebase-cloud-messaging

我的 flutter 应用程序与 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());
}
Run Code Online (Sandbox Code Playgroud)

错误是:

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

我在这里搜索并从这里找到了解决方案并更新了我的主要方法,如下所示:

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());
}
Run Code Online (Sandbox Code Playgroud)

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

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

Quy*_*yen 54

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

  • 第一:手动更改每个 Firebase 项目中的应用程序名称。

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

     await Firebase.initializeApp(
     name: "dev project",
     options: DefaultFirebaseOptions.currentPlatform);
    
    Run Code Online (Sandbox Code Playgroud)

  • 它适用于添加名称 (3认同)
  • 像魔术一样工作! (2认同)
  • 只需添加名称即可。我已经添加了 firebase 项目名称。 (2认同)

Seb*_*Seb 21

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

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

android/app/src/<flavor>/google-services.json
Run Code Online (Sandbox Code Playgroud)

和 ios 上一样:

ios/Runner/<flavor>/GoogleService-Info.plist
Run Code Online (Sandbox Code Playgroud)

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

之后进行“Flutter clean”并手动删除 android/build(如果未删除)


Mad*_*han 15

在摸索 firebase 项目和升级包后出现此错误。

修复者

flutter clean
flutter pub get
Run Code Online (Sandbox Code Playgroud)

然后再次构建项目。

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


Abd*_*kby 8

过时的 google-services 文件或使用 flutter fire 工具从项目切换到另一个项目可能会发生这种情况

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

ios/Runner/<flavor>/GoogleService-Info.plist

lib/firebase_options.dart

然后写这些命令

1-flutter clean

2-然后安装flutterfire cliflutterfire configure

3-flutter pub get 这应该可以解决问题

c将 name 挂在 name 中await Firebase.initializeApp(.....会导致 firebase 服务出现问题

  • 我在 mac 上使用 ios 模拟器时遇到错误。GoogleService-Info.plist 已过时。我使用 flutterfire configure --project myfirebaseprojectname 更改为我的 prod firebase 项目,但是这个 cmd 没有触及 ios 的 GoogleService-Info.plist,因此我只是删除了这个文件,然后运行上面的 flutterfire configure 命令,然后它创建了(其中其他)ios 的正确文件。 (2认同)