![](/img/trans.png)
[英]Flutter: MissingPluginException(No implementation found for method DocumentReference#set on channel plugins.flutter.io/firebase_firestore)
[英]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 package 可能需要在设备上完全重置应用程序(删除初始值):
完毕!
如果不筛选整个项目,很难准确地说出哪里出了问题,但这里有一些可能会解决问题的措施。
flutter doctor
并验证一切都按预期工作。flutter clean
然后flutter pub get
。如果您仍然收到相同的错误,那么您可能在编辑其中一个配置文件时犯了错误。
<meta-data />
标签,因为这样做会导致上述错误。 遇到此问题后,我最终意识到,该错误非常模糊,并不一定意味着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 的说明和工具:
我有同样的问题,上面的答案没有帮助,这就是写这篇文章的原因。
当我在开发过程中更改应用程序的 package 名称时出现问题。 因此,我从 git 中提取了最近的先前代码,并更新了该文件夹中的 package 名称,从而为我解决了这个问题。 仍然不知道是什么导致了这个问题!
如果您未使用所有可用平台配置应用程序,Firebase.initializeApp() 将引发错误。
使用下面的代码行
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
请按照以下步骤删除此问题:-
flutter clean
flutter pub cache repair
flutter pub get
为我解决的问题是检查安装 firebase_core。 我的 pubspec.yaml 中缺少它
我现在面临这个问题,并将添加为我修复它的步骤。 我不必执行minifyEnabled false
或削减任何其他性能。 我不能说不需要哪些步骤,但希望这对某人有所帮助。
app/build.gradle
文件中implementation platform('com.google.firebase:firebase-bom:30.3.2')
。 这迫使我在同一个文件中也将compileSdkVersion
到 33。android/build.gradle
文件中碰撞了classpath 'com.android.tools.build:gradle:7.2.1
。distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-all.zip
flutter pub upgrade --major-versions
。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());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.