iOS 无法使用 Flutter 构建 Firestore

Firestore is failed to build with Flutter for iOS

我想将 Firestore 添加到 Flutter 应用程序,但我在 运行iOS 上遇到问题。 我已经将此行添加到 pubspec.yaml

cloud_firestore: ^0.6.3

Flutter 已更新。 Flutter 医生说我有 v0.3.1.

在为 iOS 模拟器编译应用程序时出现此构建错误

 Xcode's output: ↳     /
Users/*********/.pub-cache/hosted/pub.dartlang.org/firebase_core-0.2.3/ios/Classes/FirebaseCorePlugin.m:7:9:
fatal error: 'Firebase/Firebase.h' file not found
    #import <Firebase/Firebase.h>
        ^~~~~~~~~~~~~~~~~~~~~


 1 error generated

我还 运行 pod 更新以确保它不是 cocoapods 的问题。

更新

经过另一项研究,我发现从 iOS 文件夹中的 Podfile 中删除 #use_frameworks! 让我们编译项目。但是万一这个删不掉怎么办呢?

对此的更新为我提供了足够的信息来进行诊断(希望如此)。 Flutter 不太擅长支持#use_frameworks 和 swift,但 was fixed 最近(2018 年 4 月中旬)。但是,在撰写本文时,它可能尚未进入 Beta 频道。

之前设置#use_frameworks 时发生的事情是它没有将所有内容链接到正确的库中,并且 cocoapods 错误阻止它找到某些文件。最新版本的一切都使用动态链接,但在 podfile 中有 static_framework=true 用于静态依赖关系,以便他们需要的一切实际上都链接到正确的位置。

这已在主 branch/channel 上修复并测试,但现在应该已经在开发 branch/channel 上完成了。

以下是确保您的环境支持修复的步骤,来自 other github issue:

  • 确保你安装了 Cocoapods 1.5.0(pod --version 应该 说 >= 1.5.0)
  • 将您对 firebase_xxx、google_sign_in 或 cloud_firestore 插件的所有依赖项更改为最新版本 (查找引用 Cocoapods 1.5.0 的更改日志条目)
  • 将您的 ios/Podfile 更改为 Flutter master 分支上的最新版本 (https://github.com/flutter/flutter/tree/master/packages/flutter_tools/templates/cocoapods)
  • 删除 ios/Podfile.lock 和 ios/Pods
  • 使用 flutter channel <branch>
  • 切换到 Flutter master(或 dev)分支
  • flutter clean ; flutter run
cd ios
pod update Firebase/Firestore

然后按照此命令进行缓存修复

flutter clean

flutter pub cache repair

尝试解决问题。如果这不起作用,更严厉的措施是删除 ios/Pods 文件夹和 Podfile.lock.