pubspec.yaml 中的第 3 方 Dart 包导致 Xcode 中的致命文件未找到错误(但适用于 Android)

3rd party Dart packages in pubspec.yaml lead to fatal file not found error in Xcode (but works on Android)

我正在 MacBook Pro 运行 macOS Mojave 上的 Android Studio 中开发 Flutter 应用程序。该应用程序在 Android(模拟器和物理设备)上编译并运行,但无法为 iOS(模拟器和物理设备)编译。如果在 pubspec.yaml.

中没有引用第 3 个 Dart 库,它在两个平台上都能正常编译

Flutter 医生没有显示任何错误。

这是我的 pubspec.yaml:

name: yr_school_bus_cancellations
description: York Region School Bus Cancellations

# The following defines the version and build number for your application.
# A version number is three numbers separated by dots, like 1.2.43
# followed by an optional build number separated by a +.
# Both the version and the builder number may be overridden in flutter
# build by specifying --build-name and --build-number, respectively.
# Read more about versioning at semver.org.
version: 1.0.0+1

environment:
  sdk: ">=2.0.0-dev.68.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter

  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  cupertino_icons: ^0.1.2
  http: ^0.12.0+1
  html: ^0.13.3+3
  sqflite: ^1.1.0
  path_provider: ^0.5.0+1
  url_launcher: ^5.0.1

dev_dependencies:
  flutter_test:
    sdk: flutter


# For information on the generic Dart part of this file, see the
# following page: https://www.dartlang.org/tools/pub/pubspec

# The following section is specific to Flutter.
flutter:

  # The following line ensures that the Material Icons font is
  # included with your application, so that you can use the icons in
  # the material Icons class.
  uses-material-design: true

  # To add assets to your application, add an assets section, like this:
  # assets:
  #  - images/a_dot_burr.jpeg
  #  - images/a_dot_ham.jpeg

  # An image asset can refer to one or more resolution-specific "variants", see
  # https://flutter.io/assets-and-images/#resolution-aware.

  # For details regarding adding assets from package dependencies, see
  # https://flutter.io/assets-and-images/#from-packages

  # To add custom fonts to your application, add a fonts section here,
  # in this "flutter" section. Each entry in this list should have a
  # "family" key with the font family name, and a "fonts" key with a
  # list giving the asset and other descriptors for the font. For
  # example:
  # fonts:
  #   - family: Schyler
  #     fonts:
  #       - asset: fonts/Schyler-Regular.ttf
  #       - asset: fonts/Schyler-Italic.ttf
  #         style: italic
  #   - family: Trajan Pro
  #     fonts:
  #       - asset: fonts/TrajanPro.ttf
  #       - asset: fonts/TrajanPro_Bold.ttf
  #         weight: 700
  #
  # For details regarding fonts from package dependencies,
  # see https://flutter.io/custom-fonts/#from-packages

和Xcode中的错误信息:

=== BUILD TARGET Runner OF PROJECT Runner WITH CONFIGURATION Debug ===
The use of Swift 3 @objc inference in Swift 4 mode is deprecated. Please address deprecated @objc inference warnings, test your code with “Use of deprecated Swift 3 @objc inference” logging enabled, and then disable inference by changing the "Swift 3 @objc Inference" build setting to "Default" for the "Runner" target.
=== BUILD TARGET Runner OF PROJECT Runner WITH CONFIGURATION Debug ===
/Users/josephlam/AndroidStudioProjects/2019/yr_school_bus_cancellations/ios/Runner/GeneratedPluginRegistrant.m:6:9: fatal error: 'path_provider/PathProviderPlugin.h' file not found
#import <path_provider/PathProviderPlugin.h>
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.

PathProvider 不是导致该问题的唯一软件包。如果我在 pubspec.yaml 中删除对 PathProvider 的引用,那么构建将在另一个第 3 方包(即 http、url_launcher、sqflite)上失败。

有谁知道如何解决这个问题?谢谢!

感谢 Günter Zöchbauer 的帮助,以下文章为我解决了这个问题:https://github.com/flutter/flutter/wiki/Workarounds-for-common-issues#generated-project-files-outdated

以下是文章内容的复制:

当使用 flutter create foo 创建项目时,会在 ios/ 和 android/ 子目录中创建多个文件。

较新的 Flutter 版本生成这些文件的方式可能有所不同,使用较旧的 Flutter 版本创建的项目可能会导致问题。

  • 删除 ios/ 和 android/ 目录和 运行 flutter create 。重新生成这些目录。

自定义更改将会丢失,需要重新应用。如果项目致力于像 Git.

这样的版本控制系统,这是最简单的