Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flatter Firebase和Android问题-无法初始化。找不到执行了最新(2020年9月)迁移指令的google-services.json_Android_Firebase_Flutter_Google Play Services_Flutter Dependencies - Fatal编程技术网

Flatter Firebase和Android问题-无法初始化。找不到执行了最新(2020年9月)迁移指令的google-services.json

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软件包,他们刚刚发布了一些更新。我花了相当长的时间重构我的项目,以符合大多数突破性的变化。我面临的问题与新的更新有关。不幸的是,我所遇到的错误并没有

我是一名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:

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”时,它开始工作。

经过几个小时的努力,我终于找到了解决方案

  • 首先,将“谷歌服务”插件作为依赖项添加到 android/build.gradle文件:

               buildscript {
          dependencies {
            // ... other dependencies
            classpath 'com.google.gms:google-services:4.3.3'
          }
        }
    
    apply plugin: 'com.google.gms.google-services'
    
  • 最后,通过在/android/app/build.gradle文件中的apply plugin“com.android.application”行下面添加以下内容来执行插件:

               buildscript {
          dependencies {
            // ... other dependencies
            classpath 'com.google.gms:google-services:4.3.3'
          }
        }
    
    apply plugin: 'com.google.gms.google-services'
    
  • Android的构建# 打开/android/app/build.gradle文件。在dependencies下添加multidex模块,并在defaultConfig中启用它:

            android {
                defaultConfig {
                    // ...
                    minSdkVersion 16
                    targetSdkVersion 28
                    multiDexEnabled true
                }
            }
    
            dependencies {
              implementation 'com.android.support:multidex:1.0.3'
            }
    
    资料来源:

  • 从firebase下载
    google services.json
    文件
  • 将google服务插件添加到您的
    应用程序/build.gradle
    文件:
    dependencies{classpath'com.google.gms:googleservices:4.3.4'/…}
  • 在上面的
    android/build.gradle
    添加
    apply插件:“com.google.gms.google服务”
  • android{/…}

    参考:

  • 请将firebase核心依赖项更新为
    firebase\u核心:“0.5.2+1”
    在那之后,我又加了一句

  • WidgetsFlutterBinding.ensureInitialized(); Firebase.initializeApp(); runApp(MaterialApp(debugShowCheckedModeBanner:false,home:MyApp())

    主要方法

  • 并更新项目和应用程序目录中的所有in build.gaddle

  • 我遵循这些步骤(上面Brian和Muhammed说)并执行

    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'