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

firebase_auth: ^0.16.0
cloud_firestore: ^0.13.5

当我试着跑的时候,它不工作了

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.

对此有什么解决办法吗?

推荐答案

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

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

进入:

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

Note:

在Flutter 中使用火基时需要使用minSdkVersion 23.

docs:

默认情况下,Flatter支持Android SDK v16(Jelly Bean,2012年发布),但multidex并不真正适用于Jelly Bean(尽管这是可能的).配置Jelly Bean使其工作超出了本代码实验室的范围,因此我们将把最低目标SDK版本从v16更改为v21(棒棒糖,2014年发布).

要更改最低目标SDK版本,请执行以下操作:

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

升级后,应该可以正常工作.The 100 file is provided to you when you create any new flutter project.作为参考,您的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


Explanation页,共settings.gradle页:

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

这一行:

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

正在获取您在计算机中创建的Flutter 项目的路径.供参考:

https://docs.gradle.org/current/javadoc/org/gradle/api/initialization/ProjectDescriptor.html#getProjectDir--

这一行:

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

将在Flutter 项目的根目录下创建一个名为.flutter-plugins的空文件.则plugins.each{ name, path ->这基本上是将插件名称和插件的路径添加到文件.flutter_plugins的迭代,如果plugin is not found in that file you get the error in this question

.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/

Flutter相关问答推荐

Flutter -如何停止块监听程序在后台堆栈中运行

Flutter BLoC et workmanager:如何创建独特的仓库初始化模式?

material 3芯片,不能go 除输入芯片小部件上的轮廓

Flutter 文件拾取器Android SingleInstance模式它返回的文件路径为空

参数类型';List<;Dynamic&>不能分配给参数类型';List<;SingleChildWidget&>';

为什么FloatingActionButton未显示

尽管我的 url 链接正确,但 ArgumentError(无效参数:URI 文件中未指定主机:///)错误

如何从列表中更新provider变量:Flutter列表和Provider优化指南

点击后,将按钮的 colored颜色 禁用/更改一段时间

Flutter ListView 在调用 setState 后未更新

围绕父组件旋转位置组件

启动画面中的淡入淡出图像

Flutter - 展开图标无法正常工作

Flutter 分析发现 Gitlab CI/CD 管道中的问题,但它在本地没有

使用 Riverpod 和 copyWith 方法更新数据类中列表中变量的值

Flutter HLS .m3u8 视频无法实时播放

如何在 Flutter 执行通知时运行后台代码?

Flutter RawMaterialButton 常量相对大小

使用 Firebase/Flutter 进行应用判断 - 100% 无效请求

Flutter 小部件中的视图和逻辑分离