添加cloud_firestore依赖后Flutter项目无法运行的问题求助
问题描述
新建带默认主页的Flutter项目,在pubspec.yaml中添加多个依赖后发现:只要依赖列表包含cloud_firestore,应用就无法运行并抛出大量错误。该问题突发,所有包含cloud_firestore的项目均无法正常启动。尝试创建全新空白项目仅添加cloud_firestore依赖,错误依旧,最终通过重装电脑解决。
输出错误
[macos/Pods/gRPC-Core/third_party/protobuf/examples] dart pub get
Resolving dependencies...
pubspec.yaml has no lower-bound SDK constraint.
You should edit pubspec.yaml to contain an SDK constraint:environment:
sdk: '^3.0.0'exit code 65
调试错误
Xcode build done. 6.5s
Failed to build iOS app
Lexical or Preprocessor Issue (Xcode): 'openssl/ssl.h' file not found
/Applications/Development/boiler_betas/ios/Pods/gRPC-Core/src/core/tsi/ssl/key_logging/ssl_key_logging.h:22:9Could not build the application for the simulator.
Error launching application on iPhone 14 Pro Max.
项目pubspec.yaml内容
name: boiler_betas description: A new Flutter project. # The following line prevents the package from being accidentally published to # pub.dev using `flutter pub publish`. This is preferred for private packages. publish_to: 'none' # Remove this line if you wish to publish to pub.dev # 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. # In Android, build-name is used as versionName while build-number used as versionCode. # Read more about Android versioning at https://developer.android.com/studio/publish/versioning # In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. version: 1.0.0+1 environment: sdk: '>=2.17.0 <4.0.0' # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions # consider running `flutter pub upgrade --major-versions`. Alternatively, # dependencies can be manually updated by changing the version numbers below to # the latest version available on pub.dev. To see which dependencies have newer # versions available, run `flutter pub outdated`. dependencies: flutter: sdk: flutter # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. firebase_core: ^2.15.0 cupertino_icons: ^1.0.2 dotted_border: ^2.0.0+3 flutter_svg: ^2.0.7 firebase_auth: ^4.7.2 cloud_firestore: ^4.8.4 image_picker: ^1.0.2 video_player: ^2.7.0 file_picker: ^5.3.3 firebase_storage: ^11.2.3 intl: ^0.18.1 chewie: ^1.7.0 http: ^1.1.0 dev_dependencies: flutter_test: sdk: flutter # The "flutter_lints" package below contains a set of recommended lints to # encourage good coding practices. The lint set provided by the package is # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. flutter_lints: ^2.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec # The following section is specific to Flutter packages. 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.dev/assets-and-images/#resolution-aware # For details regarding adding assets from package dependencies, see # https://flutter.dev/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.dev/custom-fonts/#from-packages
非重装的排查建议
如果不想重装电脑,可以尝试以下步骤:
- 清理项目缓存:执行
flutter clean,然后删除ios目录下的Pods文件夹和Podfile.lock文件,再运行cd ios && pod install - 更新Flutter环境:切换到稳定版
flutter channel stable,再执行flutter upgrade - 检查并安装openssl:通过Homebrew安装
brew install openssl,之后在Xcode中配置头文件路径 - 重新初始化Firebase:卸载并重装Firebase CLI,然后重新执行
firebase init关联项目 - 验证Xcode版本:确保Xcode版本与当前Flutter版本兼容,必要时更新Xcode到最新稳定版
内容的提问来源于stack exchange,提问作者Kodo

