【问题标题】:Plugin project :firebase_core_web not found插件项目:firebase_core_web 未找到
【发布时间】:2020-08-27 03:41:34
【问题描述】:

我尝试将 Android 项目连接到 Firebase,但在将以下内容添加到 pubsec.yaml 时出现此错误:

firebase_auth: ^0.16.0
cloud_firestore: ^0.13.5

当我 gradle 运行但它不工作时

Plugin project :firebase_core_web not found. Please update settings.gradle.
Plugin project :firebase_auth_web not found. Please update settings.gradle.
Plugin project :cloud_firestore_web not found. Please update settings.gradle.

有什么解决办法吗

【问题讨论】:

    标签: firebase flutter dart google-cloud-firestore firebase-authentication


    【解决方案1】:

    在您的 android/app/build.gradle 中,更新以下内容:

    android {
        // ...
        defaultConfig {
            // ...
            minSdkVersion 16
        }
    }
    

    进入:

    android {
        // ...
        defaultConfig {
            // ...
            minSdkVersion 23
        }
    }
    

    注意:

    在flutter中使用firebase时需要使用minSdkVersion 23

    来自docs

    默认情况下,Flutter 支持 Android SDK v16(Jelly Bean,2012 年发布),但 multidex 并不能真正与 Jelly Bean 一起使用(尽管有可能)。配置 Jelly Bean 以使其工作超出了本 Codelab 的范围,因此我们将最低目标 SDK 版本从 v16 更改为 v21(Lollipop,2014 年发布)。

    更改最低目标 SDK 版本:

    • 打开 android/app/build.gradle,然后找到显示 minSdkVersion 16 的行。
    • 将该行更改为 minSdkVersion 21。
    • 保存文件。

    升级后,它应该可以正常工作。 settings.gradle 文件会在您创建任何新的 Flutter 项目时提供给您。作为参考,这是您的 settings.gradle 文件应该是这样的(默认文件没有更改):

    include ':app'
    
    def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
    
    def plugins = new Properties()
    def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
    if (pluginsFile.exists()) {
        pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
    }
    
    plugins.each { name, path ->
        def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
        include ":$name"
        project(":$name").projectDir = pluginDirectory
    }
    

    https://github.com/PeterHdd/Firebase-Flutter-tutorials/blob/master/firebase_storage_tutorial/android/settings.gradle


    settings.gradle

    解释

    Gradle是用于android项目的构建工具,就像antmaven一样,它使用groovy语言或kotlin编写脚本。在这种情况下,上面的代码是使用groovy 编写的,因为groovyjvm 语言,所以它可以使用Java 库。所以基本上include ':app' 会将项目添加到构建中(在 groovy 中,您可以省略方法的括号)。

    这一行:

    def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
    

    正在获取您在机器中创建的颤振项目的路径。供参考:

    https://docs.gradle.org/current/javadoc/org/gradle/api/initialization/ProjectDescriptor.html#getProjectDir-- https://docs.oracle.com/javase/8/docs/api/java/io/File.html#toPath-- https://docs.oracle.com/javase/7/docs/api/java/util/Properties.html

    这一行:

    def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
    

    将在你的 Flutter 项目的根目录下创建一个名为 .flutter-plugins 的空文件。然后plugins.each{ name, path ->这基本上是一个迭代,它将插件名称和插件路径添加到文件.flutter_plugins,如果在该文件中找不到插件,你会得到这个问题中的错误

    .flutter-plugins文件:

    # This is a generated file; do not edit or check into version control.
    cloud_firestore=/Users/<users>/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.13.6/
    cloud_firestore_web=/Users/<users>/.pub-cache/hosted/pub.dartlang.org/cloud_firestore_web-0.1.1+2/
    firebase_auth=/Users/<users>/.pub-cache/hosted/pub.dartlang.org/firebase_auth-0.16.1/
    firebase_auth_web=/Users/<users>/.pub-cache/hosted/pub.dartlang.org/firebase_auth_web-0.1.2/
    firebase_core=/Users/<users>/.pub-cache/hosted/pub.dartlang.org/firebase_core-0.4.4+3/
    firebase_core_web=/Users/<users>/.pub-cache/hosted/pub.dartlang.org/firebase_core_web-0.1.1+2/
    firebase_database=/Users/<users>/.pub-cache/hosted/pub.dartlang.org/firebase_database-3.1.5/
    firebase_storage=/Users/<users>/.pub-cache/hosted/pub.dartlang.org/firebase_storage-3.1.5/
    

    【讨论】:

    • @GunJack 你需要minsdkversion 21,因为flutter中的firebase不适用于版本16,你可以在这里看到codelabs.developers.google.com/codelabs/flutter-firebase/#3..你所要做的就是创建一个新的flutter项目,settings.gradle在当您创建一个新的颤振项目时,其他答案已经提供给您
    • 非常感谢您解释这段代码的作用。谢谢。
    • 感谢您的详细解释
    • 但我的 settings.gradle 有参考 Flutter sdk 和其他东西。我应该用您提供的代码覆盖它还是只是附加?
    • 非常感谢@PeterHaddad 的详细解释
    【解决方案2】:

    将文件 settings.gradle 更改为此

    include ':app'
    
    def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
    
    def plugins = new Properties()
    def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
    if (pluginsFile.exists()) {
        pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
    }
    
    plugins.each { name, path ->
        def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
        include ":$name"
        project(":$name").projectDir = pluginDirectory
    }
    

    【讨论】:

    【解决方案3】:

    请在flutter app -> android -> settings.gradle中添加这个

    def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
    
        def plugins = new Properties()
    
        def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
        if (pluginsFile.exists()) {
    
            pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
        }
    
        plugins.each { name, path ->
            def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
            include ":$name"
            project(":$name").projectDir = pluginDirectory
        }
    

    【讨论】:

    • 不要将此添加到默认 settings.gradle 文件的末尾 - 您可以简单地将整个文件替换为此
    【解决方案4】:

    只需将其添加到您的 settings.gradle 文件中 -

    def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
    
    def plugins = new Properties()
    
    def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
    if (pluginsFile.exists()) {
    
        pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
    
    }
    
    plugins.each { name, path ->
        def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
        include ":$name"
        project(":$name").projectDir = pluginDirectory
    }
    

    【讨论】:

      【解决方案5】:

      除了彼得的回答 我放错了这条线。正确的是文件底部

      apply plugin: 'com.google.gms.google-services'

      【讨论】:

        【解决方案6】:

        我的设置适用于以下版本。

        pubspec.yaml

        firebase_auth:^0.14.0+5
        cloud_firestore: ^0.12.9+5

        我还添加了 (pubspec.yaml) 以使警告静音。
        firebase_core: ^0.4.5
        firebase_analytics: ^5.0.2

        build.gradle(根目录)
        类路径 'com.google.gms:google-services:4.3.3'

        build.gradle(应用程序目录)
        minSdkVersion 23
        targetSdkVersion 28

        然后我在 build.gradle
        的底部添加了这个 应用插件:'com.google.gms.google-services'

        最后是运行Terminal命令:
        $flutter 包获取

        构建项目后 - 您等待 15 秒,它会在您的 Firebase 控制台上显示
        “恭喜,您已成功将 Firebase 添加到您的应用!”
        消息。

        【讨论】:

          【解决方案7】:

          这可能是依赖版本之一不匹配。请确保您在 pubspec.yaml 中使用所有最新版本的 lib

          您可以参考最新版本的依赖项 PubDev

          【讨论】:

            【解决方案8】:

            做一个

            minSdkVersion 21

            【讨论】:

              【解决方案9】:

              我遇到了同样的错误:-

              插件项目:firebase_core_web 未找到。请更新 settings.gradle。 插件项目:cloud_fireenter code heresenter code heretore_web not found。请更新 settings.gradle。 插件项目:firebasenter code heree_auth_web 未找到。请更新 settings.gradle。

              我通过以下过程解决了这个问题:-

              转到您的应用程序级别的 gradle 文件并查看 targetSdkVersion,如果它有 16 个或更少,则通过此链接 https://developer.android.com/guide/topics/manifest/uses-sdk-element 更新到新的最新版本。会有帮助的。

              【讨论】:

                猜你喜欢
                • 2020-10-11
                • 2020-10-14
                • 2021-02-15
                • 2020-09-06
                • 2021-02-09
                • 2021-06-01
                • 2022-10-21
                • 1970-01-01
                相关资源
                最近更新 更多