Flatter Firebase和Android问题-无法初始化。找不到执行了最新(2020年9月)迁移指令的google-services.json
我是一名flatter开发者,在过去的两天里,我一直在努力让我的应用程序为Android工作。这是一个相当大的应用程序,有很多不同的功能(主要是谷歌地图和firebase),在iOS上运行得非常好。然而,现在我正试图让Android部分正常工作,由于一些Firebase问题,我似乎根本无法启动应用程序 flatterfire负责大多数Firebase软件包,他们刚刚发布了一些更新。我花了相当长的时间重构我的项目,以符合大多数突破性的变化。我面临的问题与新的更新有关。不幸的是,我所遇到的错误并没有使我更接近解决方案。我认为这与Android部分无法找到google services.json有关。正如我提到的,在iOS上一切都很好。所以我的逻辑结论是,颤振代码也很好。Google/StackOverflow/Flatterfire问题似乎都误导了我,使我无法找到答案 TL;DR编译到Android时,Flatter应用程序不会启动,因为Firebase找不到我的google-services.json。这是stacktrace:Flatter Firebase和Android问题-无法初始化。找不到执行了最新(2020年9月)迁移指令的google-services.json,android,firebase,flutter,google-play-services,flutter-dependencies,Android,Firebase,Flutter,Google Play Services,Flutter Dependencies,我是一名flatter开发者,在过去的两天里,我一直在努力让我的应用程序为Android工作。这是一个相当大的应用程序,有很多不同的功能(主要是谷歌地图和firebase),在iOS上运行得非常好。然而,现在我正试图让Android部分正常工作,由于一些Firebase问题,我似乎根本无法启动应用程序 flatterfire负责大多数Firebase软件包,他们刚刚发布了一些更新。我花了相当长的时间重构我的项目,以符合大多数突破性的变化。我面临的问题与新的更新有关。不幸的是,我所遇到的错误并没有
E/flutter (15568): [ERROR:flutter/lib/ui/ui_dart_state.cc(166)] Unhandled Exception: [core/not-initialized] Firebase has not been correctly initialized. Have you added the "google-services.json" file to the project?
E/flutter (15568):
E/flutter (15568): View the Android Installation documentation for more information: https://firebaseextended.github.io/flutterfire/docs/installation/android
E/flutter (15568):
E/flutter (15568): #0 MethodChannelFirebase.initializeApp (package:firebase_core_platform_interface/src/method_channel/method_channel_firebase.dart:86:9)
E/flutter (15568): <asynchronous suspension>
E/flutter (15568): #1 Firebase.initializeApp (package:firebase_core/src/firebase.dart:43:25)
E/flutter (15568): #2 mainCommon (package:userapp/main/main_common.dart:31:18)
E/flutter (15568): #3 main (package:userapp/main/main_dev.dart:6:9)
E/flutter (15568): #4 _runMainZoned.<anonymous closure>.<anonymous closure> (dart:ui/hooks.dart:233:25)
E/flutter (15568): #5 _rootRun (dart:async/zone.dart:1190:13)
E/flutter (15568): #6 _CustomZone.run (dart:async/zone.dart:1093:19)
E/flutter (15568): #7 _runZoned (dart:async/zone.dart:1630:10)
E/flutter (15568): #8 runZonedGuarded (dart:async/zone.dart:1618:12)
E/flutter (15568): #9 _runMainZoned.<anonymous closure> (dart:ui/hooks.dart:225:5)
E/flutter (15568): #10 _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:301:19)
E/flutter (15568): #11 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:168:12)
E/flutter (15568):
Myapp/build.gradle具有以下配置:
compileSdkVersion 29
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
lintOptions {
disable 'InvalidPackage'
}
defaultConfig {
applicationId "stackoverflow.example.package"
minSdkVersion 21
targetSdkVersion 29
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
以及以下依赖项:
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.google.firebase:firebase-messaging:20.2.4'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation 'com.android.support:multidex:2.0.1'
implementation 'com.google.firebase:firebase-perf:19.0.6'
}
我应用以下插件:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.google.firebase.firebase-perf'
apply plugin: 'com.google.firebase.crashlytics'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
Myandroid/build.gradle必须具有以下依赖项(我已将这些依赖项更新为特定的最新版本,试图修复此问题,但未成功):
我还从Firebase下载了最新版本,多次更新了我的google-services.json,但这也无济于事。我觉得很奇怪没有看到其他人有这个问题。我希望你们中的任何人都能弄清楚到底发生了什么。先谢谢你
更新:我在build.gradle中删除并添加了几个依赖项(尽管迁移指南说要全部删除,但这并不总是有效),并将android项目恢复为Java而不是Kotlin。这允许以更好的方式重新配置某些firebase消息。这似乎改变了一些东西,但仍然给我一些Firebase初始化错误。
[错误:flatter/lib/ui/ui_dart_state.cc(166)]未处理的异常:缺少PluginException(未找到通道插件上方法Firebase#initializeCore.flatter.io/Firebase_core的实现)
在我解决这个问题之前我不会睡觉♞
更新2:我最终创建了一个新项目,从原始项目中仔细复制firebase和多个其他软件包。之后,我复制了lib/android中的每个文件以及build.gradle和manifests中各自的配置。对于iOS,我只是复制了整个项目,这一点立即奏效。
在“新”项目中,所有这些似乎都起了作用。我仍然完全不确定罪魁祸首是什么,因为我已经把确切的项目复制到了一个新的项目上。无论如何,我希望这能帮助任何人解决这个问题。我在这上面浪费了五天我看到了太多可能不对的事情。 我不确定步骤4(确保在调用runApp()之前调用Firebase.initializeApp()),在我的情况下,在runApp之后初始化Firebase
void main() {
initializeDateFormatting().then((_) => runApp(MyApp()));
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return FutureBuilder(
// Initialize FlutterFire
future: Firebase.initializeApp(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
我看到的另一件事是你发布的链接,我建议你再看一遍,在某些方面它说:
确保您没有在Android/app/build.gradle文件依赖项{…}部分手动导入任何Firebase Android SDK依赖项。
e、 删除任何类似于:implementation'com.google.firebase:firebase-{PRODUCT}:{VERSION}的行
这是我在build.gradle依赖项中看到的东西。
你的gradle与我的太不一样了,它更接近Android Studio中启动应用程序的原始版本
希望这有点帮助。我有这个问题。当我在gradle中添加应用插件:“com.google.gms.google services”时,它开始工作。经过几个小时的努力,我终于找到了解决方案
buildscript {
dependencies {
// ... other dependencies
classpath 'com.google.gms:google-services:4.3.3'
}
}
apply plugin: 'com.google.gms.google-services'
buildscript {
dependencies {
// ... other dependencies
classpath 'com.google.gms:google-services:4.3.3'
}
}
apply plugin: 'com.google.gms.google-services'
android {
defaultConfig {
// ...
minSdkVersion 16
targetSdkVersion 28
multiDexEnabled true
}
}
dependencies {
implementation 'com.android.support:multidex:1.0.3'
}
资料来源:
google services.json
文件应用程序/build.gradle
文件:
dependencies{classpath'com.google.gms:googleservices:4.3.4'/…}
android/build.gradle
添加apply插件:“com.google.gms.google服务”
android{/…}
参考:
firebase\u核心:“0.5.2+1”
在那之后,我又加了一句
flutter build apk --debug
flutter build apk --profile
flutter build apk --release
然后,运行应用程序!这对我有用 只需使缓存失效并重新启动Android Studio即可
我没有机会同步gradle文件(如Google文档所指定的),所以我怀疑这与老的gradle文件在某种程度上被应用程序使用有关
我用文件->使缓存无效并重新启动解决了这个问题。
根据经验,重新启动将解决50%的问题
apply plugin: 'com.google.gms.google-services'