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
.
我想将 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
.