在IOS上抖动:致命错误:找不到模块“ cloud_firestore”

时间:2020-10-14 22:21:43

标签: ios firebase flutter google-cloud-firestore

长时间在github上搜索并查找类似错误后,没有提出的解决方案可以帮助我解决该错误。

我尝试了很多事情(有点混乱):

  • 删除IOS衍生数据
  • 更改Firestore软件包的版本
  • 干净整洁
  • rm -Rf ios / Pods
  • rm -Rf ios / .symlinks
  • rm -Rf ios / Flutter / Flutter.framework
  • rm -Rf ios / Flutter / Flutter.podspec
  • rm -rf ios / Podfile ios / Podfile.lock ios / Pods ios / Runner.xcworkspace
  • pod初始化,安装和更新
  • 取消注释平台:ios,podfile中的“ 9.0”(可能未链接到此问题)

这是错误:

    ** BUILD FAILED **


Xcode's output:
↳
    /Users/flo/Mobile/we_ll_see/ios/Runner/GeneratedPluginRegistrant.m:10:9: fatal error: module
    'cloud_firestore' not found
    @import cloud_firestore;
     ~~~~~~~^~~~~~~~~~~~~~~
    1 error generated.
    note: Using new build system
    note: Building targets in parallel
    note: Planning build
    note: Constructing build description

需要一些帮助人员

6 个答案:

答案 0 :(得分:4)

如果您使用的是 Android Studio,如果您手动创建 Podfile,则可能会发生错误。 Flutter 仅使用 pubspec.yaml 文件运行。您不必自己设置 Podfile。如果您遵循 firestore 主页上的安装指南,只需在使用 Xcode 添加 GoogleService-Info.plist 文件后跳过所有内容。

答案 1 :(得分:2)

这是一个非常糟糕的不幸错误。在尝试解决这个问题几个小时后,我终于找到了解决方案。问题在于,您的Podfile不会使用pubspec.yaml文件进行更新。我认为您的Podfile几乎是空的:

target 'Runner' do
 use_frameworks!

end

但这是一个大问题。如果您尝试以下操作,则会创建该Podfile:$ rm Podfile,然后$ pod init。

这是我的解决方案:

...但是在此之前,您必须检查一下,否则我的解决方案可能无法正常工作: 运行:

$ pod install

如果此命令的结果是:

There are 0 dependencies from the Podfile and 0 total pods installed.

您可以肯定,此解决方案有效。否则它也将起作用,但是也许您应该在注释中将您的命令行结果写给我!

现在返回解决方案...

  1. 步骤:使用以下代码更新Podfile(请删除文件的旧内容):

     ENV['COCOAPODS_DISABLE_STATS'] = 'true'
    
     project 'Runner', {
    
       'Debug' => :debug,
       'Profile' => :release,
       'Release' => :release,
     }
    
     def flutter_root
       generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
       unless File.exist?(generated_xcode_build_settings_path)
         raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
       end
    
       File.foreach(generated_xcode_build_settings_path) do |line|
         matches = line.match(/FLUTTER_ROOT\=(.*)/)
         return matches[1].strip if matches
       end
       raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
     end
    
     require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
    
     flutter_ios_podfile_setup
    
     target 'Runner' do
       use_frameworks!
       use_modular_headers!
    
    
    
       flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
     end
    
     post_install do |installer|
       installer.pods_project.targets.each do |target|
         flutter_additional_ios_build_settings(target)
       end
     end
    

现在,Podfile正在更新您在podspec.yaml文件中写下的Pod。

现在,您必须通过调用以下命令将podspec.yaml文件与xcode pod同步:

$ pod install

然后,您将看到所有吊舱下载。之后,您可以通过调用flutter run或仅在编辑器中运行flutter项目。

注意:Podfile.lock文件列出了Pod和每个Pod的版本。 “真实” Podfile仅用于podspec.yaml文件与真实pod之间的连接。如果查看Podfile.lock文件,您会看到没有写下任何Pod,这就是问题所在。如果没有要安装的Pod,则找不到每个模块(例如“ cloud-firestore”)...

我希望这个答案对您有帮助,您可以在评论中问我是否有问题,但是我知道这不会发生:)

答案 2 :(得分:1)

我试过了

rm Podfile  
pod init
pod install

但它总是显示已安装的 0 个依赖项

然后我删除了

podfile.lock

尝试过

pod install again

并且它安装了所有项目依赖项,包括 cloud_firestore。 flutter run and flutter build ios 成功了。

答案 3 :(得分:1)

对我来说,我只是将部署目标更新为与 Pod 文件中定义的相同。

请注意,您需要打开 Runner.xcworkspace 而不是 Runner.xcodeproj。

答案 4 :(得分:0)

分享此内容,以防将来对其他人有所帮助。我遇到了与原始海报相同的问题。我尝试了上面建议的所有解决方案,但没有一个对我有用。在撰写此消息时,至少有 5 个不同的人在 Github 上的 flutterfire 存储库中报告了相同的问题,但也没有人在那里发布明确的解决方案。

对我有用的是删除 Flutter 项目中的整个 ios 目录,然后重建它:

flutter create -i swift .

这很耗时,但它解决了问题。 'cloud_firestore' not found 错误不再发生在我身上。除了重建 ios 文件夹,我还得重新添加 GoogleService-Info.plist 到 Runner,重新添加图标,重新添加 Xcode 中的签名和功能,并重新添加 Xcode 中的目标属性,例如隐私使用说明,等

我建议您先尝试上面提到的所有其他选项,但如果像我一样它们不能为您解决问题,那么删除并重建整个 ios 文件夹可能是一个有效的下一步。

答案 5 :(得分:0)

确保将从 firebase 下载的 google services info plist 文件放入与 info-plist 相同的文件夹中