Flutter iOS构建失败:Pod文件错误

时间:2019-12-16 19:06:53

标签: xcode firebase flutter dart podfile

我正在尝试在ios模拟器(ios 13)上构建我的应用程序,但是构建失败。

这是错误。

Launching lib/main.dart on iPhone 11 Pro Max in debug mode...
Warning: Podfile is out of date
  This can cause a mismatched version of Flutter to be embedded in your app, which may result in App Store submission rejection or crashes.
  If you have local Podfile edits you would like to keep, see https://github.com/flutter/flutter/issues/24641 for instructions.
To regenerate the Podfile, run:
  rm ios/Podfile

Running Xcode build...
Xcode build done.                                            7,8s
Failed to build iOS app
Error output from Xcode build:
↳
    ** BUILD FAILED **


Xcode's output:
↳
    /Users/kareldebedts/developer/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.12.11/ios/Classes/CloudFirestorePlugin.m:155:24: error: no visible @interface for 'FIRQuery' declares the selector 'queryWhereField:arrayContainsAny:'
            query = [query queryWhereField:fieldName arrayContainsAny:value];
                     ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/kareldebedts/developer/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.12.11/ios/Classes/CloudFirestorePlugin.m:157:24: error: no visible @interface for 'FIRQuery' declares the selector 'queryWhereFieldPath:arrayContainsAny:'
            query = [query queryWhereFieldPath:fieldPath arrayContainsAny:value];
                     ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/kareldebedts/developer/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.12.11/ios/Classes/CloudFirestorePlugin.m:163:24: error: no visible @interface for 'FIRQuery' declares the selector 'queryWhereField:in:'
            query = [query queryWhereField:fieldName in:value];
                     ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/kareldebedts/developer/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.12.11/ios/Classes/CloudFirestorePlugin.m:165:24: error: no visible @interface for 'FIRQuery' declares the selector 'queryWhereFieldPath:in:'
            query = [query queryWhereFieldPath:fieldPath in:value];
                     ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/kareldebedts/developer/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.12.11/ios/Classes/CloudFirestorePlugin.m:764:16: warning: 'timestampsInSnapshotsEnabled' is deprecated [-Wdeprecated-declarations]
          settings.timestampsInSnapshotsEnabled = (bool)call.arguments[@"timestampsInSnapshotsEnabled"];
                   ^
    In module 'FirebaseFirestore' imported from /Users/kareldebedts/DRINKM8/drinkm8_git/ios/Pods/Headers/Public/Firebase/Firebase.h:31:
    /Users/kareldebedts/DRINKM8/drinkm8_git/ios/Pods/FirebaseFirestore/Firestore/Source/Public/FIRFirestoreSettings.h:69:20: note: 'timestampsInSnapshotsEnabled' has been explicitly marked deprecated here
        __attribute__((deprecated));
                       ^
    1 warning and 4 errors generated.

Could not build the application for the simulator.
Error launching application on iPhone 11 Pro Max.

我尝试了rm ios / Podfile,但是终端说该命令不存在...

这是我的pubspec yaml。

dependencies:
  flutter:
    sdk: flutter

  cupertino_icons: ^0.1.2
  firebase_core: ^0.4.0
  firebase_auth: ^0.11.1+12
  flutter_facebook_login: ^2.0.1
  cloud_firestore: ^0.12.7+1
  shared_preferences: ^0.5.3+4
  geolocator: ^5.1.1+1
  url_launcher: ^5.1.2
  rflutter_alert: ^1.0.3
  font_awesome_flutter: ^8.5.0
  flutter_picker: ^1.0.13
  uuid: 2.0.1
  image_picker: ^0.6.1
  path_provider: ^1.2.0
  image: ^2.1.4
  firebase_storage: ^3.0.4
  flutter_datetime_picker: ^1.2.5
  intl: ^0.15.8
  native_contact_picker: ^0.0.6
  flutter_spinkit: ^4.0.0
  transparent_image: ^1.0.0
  connectivity: ^0.4.3+7
  flare_splash_screen: ^2.1.3
  algolia: ^0.1.6+1
  http: ^0.12.0+2
  cloud_functions: ^0.4.1+6
  firebase_messaging: ^5.0.2
  avatar_glow: ^1.0.0
  google_maps_flutter: ^0.5.21+8
  geoflutterfire: ^2.0.2
  rxdart: ^0.22.2
  auto_size_text: ^2.1.0
  camera: ^0.5.4+1
  video_player: ^0.10.2+1
  story_view: ^0.11.0
  thumbnails: ^1.0.1
  image_crop: ^0.3.1
  file_picker: ^1.4.2
  pdf_viewer_plugin: ^1.0.0+2
  flutter_background_geolocation: ^1.3.2
  location_permissions: ^2.0.3
  image_downloader: ^0.19.1
  permission_handler: ^3.3.0
  firebase_database: ^3.1.0

有人知道什么会导致问题吗? 也许是因为我将模拟器升级到了IOS 13 ...

谢谢!

8 个答案:

答案 0 :(得分:28)

这种情况通常发生在我更新flutter SDK时,但是不要跳过更新以使其变得更好,更容易,因为它很容易解决

有必要修复-删除Pods文件夹中的内容将解决此问题,这是操作步骤

  1. 要完全清理(删除链接的所有点)并创建升级到新版本(也要卸载并重新安装),请编写以下命令

    flutter clean
    rm -Rf ios/Pods
    rm -Rf ios/.symlinks
    rm -Rf ios/Flutter/Flutter.framework
    rm -Rf ios/Flutter/Flutter.podspec
    
  2. 然后使用此命令复制Podfile

    rm ios/Podfile
    
  3. 最后,您的项目已准备就绪,可以开始进行

    flutter run
    

答案 1 :(得分:2)

这通常是在升级flutter应用程序时发生的,要解决此问题,请按照以下步骤操作

  1. 转到Your_Project_Directory/ios/并删除Podfile,也可以通过在根项目目录中运行以下命令来完成此操作

    rm ios/Podfile
    
  2. 再次
  3. Run您的项目,这将为您创建一个新的和更新的Podfile

答案 2 :(得分:2)

我不确定这是否对所有人都适用,但我的问题已通过在终端上运行flutter run来解决。

我只是使用vscode中的Flutter启动器,它不断抛出错误。

我已经设置了一个Podfile,但是我认为flutter run可能会对其进行更新或实例化?我不确定。

我的问题是由Flutter更新引起的

答案 3 :(得分:1)

在ios目录中使用pod install命令在项目中安装新的Pod。即使您已经有Podfile并在之前运行过pod安装。这应该为您工作。不久前我遇到了同样的问题,这就是解决的方法。

答案 4 :(得分:1)

建议 运行flutter clean

之后
pod install --verbose

运行pod install --verbose是因为如果使用cloud_firestore pod instlal可能会下载gRPC-Core [https://github.com/grpc/grpc.git],它的大小约为200MB,但由于它是git子模块最终将下载1GB。因此,要了解运行中的进展

答案 5 :(得分:1)

MacOS Catalina已将默认终端从Bash更改为ZSH。结果,我们将配置添加到〜/ .zshrc中,而不是像过去那样使用〜/ .bash_profile。

您可以通过运行以下命令随时从Bash手动更改为ZSH:chsh -s / bin / zsh安装Homebrew首先,我们需要安装Homebrew。 Homebrew使我们能够从源代码轻松地安装和编译软件包。

Homebrew带有一个非常简单的安装脚本。当它要求您安装XCode CommandLine Tools时,请说是。

打开终端并运行以下命令:ruby -e“ $(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)” 现在我们已经安装了Homebrew,我们可以使用它来安装Ruby。

我们将使用rbenv安装和管理我们的Ruby版本。

为此,请在终端中运行以下命令: brew install rbenv ruby​​-build 将rbenv添加到bash中,以便在每次打开终端时加载它 回显'如果哪个rbenv> / dev / null;然后评估“ $(rbenv init-)”; fi'>>〜/ .zshrc源〜/ .zshrc

安装Ruby

rbenv安装2.7.2 rbenv全球2.7.2 红宝石-v 这就是在ios目录中使用pod pod命令在项目中安装新的pod。 cd ios pod安装享受

答案 6 :(得分:1)

以防万一,如果有人在更新 Podfile 后遇到与此输出类似的问题:

  ld: framework not found intent
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    note: Using new build system
    note: Building targets in parallel
    note: Planning build
    note: Constructing build description

你可以试试这个:

  1. 转到 Xcode 选择您的目标。
  2. 转到构建设置。
  3. 搜索错误中显示的包名称。 e. G。 : 框架不是 找到意图。
  4. 您会看到有一个部分,如: "Linking"->"Other linker flags" ,然后点击这里的粗体部分 行。
  5. 它将打开一个对话框,您可以在其中删除未找到的框架。
  6. 删除框架名称时,还要删除 “-framework”标签。

这可能与仅适用于 Android 的软件包有关。

答案 7 :(得分:0)

MacOS Catalina已将默认终端从Bash更改为ZSH。结果,我们将配置添加到〜/ .zshrc中,而不是像过去那样使用〜/ .bash_profile。

您可以随时通过运行以下命令从Bash手动更改为ZSH: chsh -s / bin / zsh 安装Homebrew 首先,我们需要安装Homebrew。 Homebrew使我们能够从源代码轻松地安装和编译软件包。

Homebrew带有一个非常简单的安装脚本。当它要求您安装XCode CommandLine Tools时,请说是。

打开终端并运行以下命令: ruby -e“ $(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”现在我们已经安装了Homebrew,我们可以使用它来安装Ruby。

我们将使用rbenv安装和管理我们的Ruby版本。

为此,请在终端中运行以下命令:

简单安装rbenv ruby​​-build

将rbenv添加到bash中,以便在每次打开终端时加载它

echo'if which rbenv> / dev / null;然后评估“ $(rbenv init-)”; fi'>>〜/ .zshrc 来源〜/ .zshrc

安装Ruby

rbenv安装2.7.2 rbenv全球2.7.2 红宝石-v 就这样 在ios目录中使用pod install命令在项目中安装新的pod。 光盘ios 吊舱安装 享受