繁体   English   中英

MissingPluginException(在 Android 上找不到方法 Firebase#initializeCore 在通道插件上的实现。flutter.io/firebase_core)

[英]MissingPluginException(No implementation found for method Firebase#initializeCore on channel plugins.flutter.io/firebase_core) on Android

在我的 flutter 代码中调用Firebase.initializeApp()时出现上述错误。 我在这里遵循了文档: https://firebase.flutter.dev/docs

这是我的 pubspec.yaml

dependencies:
  flutter:
    sdk: flutter
  firebase_core: ^0.5.0
  cloud_firestore: ^0.14.0
  firebase_auth: ^0.18.0
  fl_chart: ^0.11.0
  snapping_sheet: ^2.0.0
  flutter_svg: ^0.18.0
  flutter_redux: ^0.6.0
  strings: ^0.1.2
  random_string: ^2.1.0
  redux_thunk: ^0.3.0
  #  firebase_crashlytics: ^0.1.4+1
  dotted_line: ^2.0.1

  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  cupertino_icons: ^0.1.3

dev_dependencies:
  flutter_test:
    sdk: flutter

这是我的 flutter 代码:

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  SystemChrome.setEnabledSystemUIOverlays(SystemUiOverlay.values);

  final store = Store<AppState>(AppState.reducer, initialState: AppState.initial(), middleware: [thunkMiddleware]);

  runApp(
    FutureBuilder(
      future: Firebase.initializeApp(),
      builder: (context, snapshot) {
        // Check for errors
        if (snapshot.hasError) {
          log(snapshot.error.toString());
          return Container(color: Colors.red);
        }

        // Once complete, show your application
        if (snapshot.connectionState == ConnectionState.done) {
          return StoreProvider<AppState>(
            store: store,
            child: MoollaApp(store: store),
          );
        }

        // Otherwise, show something whilst waiting for initialization to complete
        return Container(color: Colors.green);
      },
    ),
  );
}

以下是 my.gradle (app) 文件的相关部分:

plugins {
    id "com.android.application"
    id "com.google.gms.google-services"
    id "kotlin-android"
    id "kotlin-android-extensions"
}

这是我的项目 gradle 文件:

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    ext.kotlin_version = "1.3.72"
    repositories {
        google()
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:4.2.0-alpha07'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'com.google.gms:google-services:4.3.3'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        mavenCentral()
    }
}

rootProject.buildDir = '../build'
subprojects {
    project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
    project.evaluationDependsOn(':app')
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

和我的申请 class 分机号:

class MyApp : FlutterApplication() {
    override fun onCreate() {
        super.onCreate()
    }
}

据我所知,我已根据文档正确完成所有操作。

将 minifyEnabled 和 shrinkResources 设置为 false 可以修复它,但为什么呢? 我不知道。 如果有人知道请写评论。

buildTypes {       
    release {
        signingConfig signingConfigs.release
        minifyEnabled false
        shrinkResources false
    }
}

最近添加的 Firebase

根据您的项目的结构,添加任何新的 Firebase package 可能需要在设备上完全重置应用程序(删除初始值):

  1. 从设备上卸载应用程序
  2. 关闭并重新打开 Android Studio (有时可选)
  3. 再次运行/启动应用程序

完毕!

如果不筛选整个项目,很难准确地说出哪里出了问题,但这里有一些可能会解决问题的措施。

  1. 运行flutter doctor并验证一切都按预期工作。
  2. 运行flutter clean然后flutter pub get

如果您仍然收到相同的错误,那么您可能在编辑其中一个配置文件时犯了错误。

  1. 将您的 android/app/main/AndroidManifest.xml 与之前的工作版本进行比较(特别要确保您没有意外删除任何<meta-data />标签,因为这样做会导致上述错误。
  2. 对 android/build.gradle 和 android/app/build.gradle 执行相同的操作。

遇到此问题后,我最终意识到,该错误非常模糊,并不一定意味着firebase_core存在问题,而是任何 Firebase 插件都可能存在问题。 因此,为了缩小问题所在,我分别检查了每个 firebase 导入并在 Pubspec.yaml 文件中将其注释掉并运行它(同时注释掉我项目中使用该导入的所有代码),直到我发现package 导致了这个问题。

对我来说,我只在 iOS 上运行时遇到了这个问题。 事实证明, firebase_messaging是罪魁祸首,它是我添加到 iOS AppDelegate 的代码,用于处理最新版本的firebase_messaging插件不再需要的消息传递。

我开始了一个新项目并确保更改: classpath 'com.android.tools.build:gradle:4.2.0-alpha07'到官方支持的版本: 3.5.0不确定是否需要降级,因为正如我所说,我重新启动了一个全新的项目,其他可能影响了它。

我还向谷歌提交了一张票,这可能对未来的其他人有帮助: https://github.com/FirebaseExtended/flutterfire/issues/3212#issuecomment-675407420

要解决此问题,您必须为 Android 设置实现此依赖项。

firebase_core 

如果桌面应用程序出现此错误,则必须实现此依赖项

firebase_core_desktop: ^1.0.0

我对这个问题进行了一些研究,发现一个问题已经打开和关闭,商定的解决方案是简单地创建一个新的 flutter 应用程序并一个接一个地移植您的依赖项和文件。 虽然这对我来说不是一个可行的解决方案,但运行

flutter clean

然后

flutter pub get

似乎解决了这个问题。 到目前为止,我不确定 package 究竟是什么导致了这个问题,但在我的部署中我有

google_sign_in: ^4.5.5
firebase_core: ^1.2.0
firebase_auth: ^1.2.0

只要。

我遇到了同样的问题,然后我重新安装了应用程序并更新了我的应用程序级别 build.gradle

defaultConfig{
// add the following line
 multiDexEnabled true
}

我有这个问题。 对我来说,我忘记在 firebase 控制台中正确创建我的项目,我试图像这样初始化我的应用程序,Firebase.initializeApp();

FlutterFire 包含用于测试 SignIn、Storage 和 Firestore 的说明和工具:

https://firebase.flutter.dev/docs/testing/testing/

我有同样的问题,上面的答案没有帮助,这就是写这篇文章的原因。

当我在开发过程中更改应用程序的 package 名称时出现问题。 因此,我从 git 中提取了最近的先前代码,并更新了该文件夹中的 package 名称,从而为我解决了这个问题。 仍然不知道是什么导致了这个问题!

如果您未使用所有可用平台配置应用程序,Firebase.initializeApp() 将引发错误。

使用下面的代码行

WidgetsFlutterBinding.ensureInitialized();

await Firebase.initializeApp(
    options: DefaultFirebaseOptions.currentPlatform,
);

请按照以下步骤删除此问题:-

  1. flutter clean
  2. 然后flutter pub cache repair
  3. 然后flutter pub get
  4. 运行您的应用程序

为我解决的问题是检查安装 firebase_core。 我的 pubspec.yaml 中缺少它

我现在面临这个问题,并将添加为我修复它的步骤。 我不必执行minifyEnabled false或削减任何其他性能。 我不能说不需要哪些步骤,但希望这对某人有所帮助。

  1. app/build.gradle文件中implementation platform('com.google.firebase:firebase-bom:30.3.2') 这迫使我在同一个文件中也将compileSdkVersion到 33。
  2. android/build.gradle文件中碰撞了classpath 'com.android.tools.build:gradle:7.2.1
  3. 在 gradle-wrapper.properties 中碰撞的distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-all.zip
  4. 在此之后,我必须执行flutter pub upgrade --major-versions
  5. 是否对 shell 进行了flutter clean ,并在 IDE 上Invalidate and Restart 即便如此,我在 firebase-messaging 和 firebase-auth 中有一些 package 冲突,所以我在pubspec.yaml中删除了它们的版本(只是将它们保留为 firebase_messaging firebase_messaging:和 firebase_auth firebase_auth: respt )。 瞧,它开始工作了!

就我而言,只需按照官方文档进行操作,首先,运行以下命令并安装 flutterfire_cli

dart pub global activate flutterfire_cli

您可能还需要安装“Firebase CLI”。 安装后登录firebase,运行

firebase login

最后运行,

flutterfire configure

您可以通过菜单 select firebase 项目并生成“firebase_options.dart”文件。 在您的项目中添加以下内容

import 'firebase_options.dart';
void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp(
    options: DefaultFirebaseOptions.currentPlatform,
  );
  runApp(MyApp());
}

完整文档https://firebase.flutter.dev/docs/overview/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM