Firestore在Flutter中构建iOS失败

3
我希望将Firestore添加到Flutter应用程序中,但在iOS上运行时遇到了问题。 我已经将以下代码添加到pubspec.yaml文件中:

cloud_firestore: ^0.6.3

Flutter已更新。Flutter doctor显示我有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 update以确保这不是cocoapods的问题。

更新

经过进一步研究,我发现在iOS文件夹的Podfile中删除#use_frameworks!可以让项目编译。但如果不能删除该内容该怎么办?


你确定已经运行了 flutter packages get 和/或 flutter packages upgrade 吗? - rmtmckenzie
@rmtmckenzie 是的,我做了。 - moonvader
1个回答

6

这次更新给了我足够的信息来进行诊断(希望如此)。Flutter在支持#use_frameworks和swift方面表现不佳,但这个问题在最近已经得到修复了(2018年4月中旬)。然而,在撰写本文时,它可能还没有进入beta渠道。

以前设置#use_frameworks时发生了什么是,它没有将所有内容链接到正确的库中,并且cocoapods的一个bug正在阻止它找到某些文件。一切的最新版本都使用动态链接,但对于具有静态依赖项的依赖项,podfile中有static_framework=true,以使它们所需的一切内容实际上被链接到正确的位置。

这已在主分支/频道上得到修复和测试,但现在应该已经进入了dev分支/频道。

以下是确保您的环境支持修复的步骤,来源于其他github问题

  • 确保您已安装Cocoapods 1.5.0(运行pod --version,版本号应为>=1.5.0)
  • 将firebase_xxx、google_sign_in或cloud_firestore插件的所有依赖项更改为最新版本(查找与Cocoapods 1.5.0相关的更改日志条目)
  • ios/Podfile更改为Flutter主分支上的最新版本(https://github.com/flutter/flutter/tree/master/packages/flutter_tools/templates/cocoapods
  • 删除ios/Podfile.lock和ios/Pods文件夹
  • 使用flutter channel <branch>切换到Flutter主分支(或dev分支)
  • flutter clean ; flutter run

我刚刚尝试了这个 - 我真的很希望它能够工作,但我仍然得到“致命错误:找不到'firebase_core/FirebaseCorePlugin.h'文件”。还有其他我可以尝试的吗?这真是让人恼火! - MikeCoverUps
@MikeCoverUps 你找到解决方案了吗? - Gunhan
很遗憾,我没有。由于工作已经继续进行,我很遗憾不能再继续追求这个项目,所以它被抛在了后面。有一天我会回头看看的,希望到那时flutter会更加稳定。 - MikeCoverUps
@rmtmckenzie 谢谢。这个问题有文档记录吗?因为看起来是一个常见的错误,我浪费了一天的时间寻找解决方案。 - Praveena
@shinriyo 假设您已经尝试了我回答中的所有步骤,您可能需要创建一个新问题来解释您的项目以及可能存在的任何特殊性,或者至少提供比 没有工作 更多的说明。有许多使用Flutter发布的应用程序,并且存档确实可以正常工作。您的评论绝对没有为任何人提供足够的信息来帮助您。 - rmtmckenzie
最后。我删除了“ios”文件夹。然后,我用新的Flutter 1.7.5命令重新创建了ios文件夹。 - shinriyo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接