簡體   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