Flutter Cloud Firestore插件在Xcode归档时抛出错误
解决cloud_firestore更新后Xcode归档失败的问题
我之前也碰到过一模一样的情况:把cloud_firestore插件更到最新版后,iOS模拟器跑起来没问题,但Xcode归档就报一堆关于非模块化头文件的错误。结合你给出的日志,这里有几个亲测有效的解决办法:
办法一:修改Podfile添加针对性配置
在iOS项目的Podfile末尾添加以下代码,给gRPC相关的库关闭非模块化头文件的检查限制:
post_install do |installer| installer.pods_project.targets.each do |target| # 针对出问题的几个gRPC相关库配置 if ['gRPC-RxLibrary', 'gRPC', 'gRPC-ProtoRPC'].include?(target.name) target.build_configurations.each do |config| config.build_settings['CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES'] = 'YES' end end end end
添加完成后,在终端进入iOS目录执行pod install,之后再回到Xcode尝试归档。
办法二:直接调整Xcode项目的Build Settings
- 打开Xcode,选中你的
Runnertarget - 切换到
Build Settings标签,在搜索框输入Allow Non-modular Includes In Framework Modules - 把这个选项的取值改成
YES - 先执行
Command+Shift+K清理项目,再重新尝试归档操作
办法三:清理所有缓存和派生数据
有时候旧的缓存会导致这类兼容性问题,按以下步骤操作:
- 完全关闭Xcode
- 找到并删除
~/Library/Developer/Xcode/DerivedData下对应你的项目的文件夹(就是日志里的Runner-hizooagynttegaeqkhreoqwhrxzc这类命名的文件夹) - 回到Flutter项目根目录,执行
flutter clean - 接着执行
flutter pub get,再进入iOS目录执行pod install - 重新打开Xcode进行归档
另外,你当前用的是Flutter beta v0.3.2,这个版本比较旧了,也可以考虑升级到更稳定的正式版,旧版本Flutter和最新Firebase插件的兼容性可能也是问题诱因之一。
内容的提问来源于stack exchange,提问作者Serge B.
相关产品推荐
相关产品推荐

