解决依赖关系:pub 已完成,退出代码为 1

Resolving dependencies: pub finished with exit code 1

我有这个依赖冲突:

$ flutter pub upgrade --dry-run
Resolving dependencies...
Because image >=2.1.14 <3.0.0-nullsafety.0 depends on archive ^2.0.0 and image >=2.0.4 <2.1.14 depends on archive >=1.0.16 <3.0.0, image >=2.0.4 <3.0.0-nullsafety.0 requires archive >=1.0.16 <3.0.0.
And because flutter_launcher_icons >=0.7.1 <0.9.0 depends on image ^2.1.1 and every version of flutter_driver from sdk depends on archive 3.1.2, flutter_launcher_icons >=0.7.1 <0.9.0 is incompatible with flutter_driver from sdk.
So, because gallery depends on both flutter_driver any from sdk and flutter_launcher_icons ^0.8.1, version solving failed.
pub finished with exit code 1

版本

$ dart --version
Dart SDK version: 2.13.0-222.0.dev (dev) (Fri Apr 9 12:15:17 2021 -0700) on "macos_x64"
$ flutter --version
Flutter 2.1.0-13.0.pre.574 • channel master • https://github.com/flutter/flutter
Framework • revision 02efffc134 (2 days ago) • 2021-04-10 03:49:01 -0400
Engine • revision 8863afff16
Tools • Dart 2.13.0 (build 2.13.0-222.0.dev)

pubspec.yaml

name: gallery
description: A resource to help developers evaluate and use Flutter.
repository: https://github.com/flutter/gallery
version: 2.8.1+020801

environment:
  sdk: ">=2.6.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter
  flutter_localizations:
    sdk: flutter
  intl: ">=0.16.1 <=0.17.0"
  flutter_localized_locales: ">=1.1.1 <=2.0.0"
  cupertino_icons: ^1.0.0
  rally_assets: ^2.0.0
  meta: ^1.1.8
  scoped_model: ^1.1.0
  shrine_images: ^1.1.2
  url_launcher: ^5.6.0
  vector_math: ^2.0.8
  collection: ^1.14.0
  flutter_gallery_assets: ^0.2.6
  package_info: ^0.4.0
  google_fonts: ^1.1.2
  flutter_staggered_grid_view: ^0.3.3
  animations: ^1.1.2
  provider: ^4.3.2
  adaptive_breakpoints: ^0.0.2

dev_dependencies:
  flutter_test:
    sdk: flutter
  flutter_driver:
    sdk: flutter
  test:
  path:
  args:
  grinder: ^0.8.0
  pedantic: ^1.9.0
  string_scanner: ^1.0.5
  web_benchmarks: ^0.0.3
  flutter_launcher_icons: "^0.8.1"

flutter_icons:
  android: "launcher_icon"
  ios: true
  image_path: "assets/images/logo/roof.png"

flutter:
  assets:
    - packages/flutter_gallery_assets/assets/studies/shrine_card_dark.png
    - ...

...

尝试过

我改了:

flutter_launcher_icons: "^0.8.1"

至:

flutter_launcher_icons: "^0.9.0"

但也无济于事。

问题

我不知道如何解决冲突。有没有我可能遗漏的解决此类冲突的标准方法?

您可以运行在您的项目终端

flutter pub upgrade --major-versions

因为你的项目依赖于flutter_launcher_iconsflutter_driver 并且这两个包都依赖于具有不同版本的第三个包 archive

flutter_launcher_icons: "^0.8.1" 依赖于 archive: ">=2.0.4 <3.0.0-nullsafety.0" 而来自 sdk 的 flutter_driver 依赖于 archive: 3.1.2, 所以存在解析版本冲突 archive包。

因此,要解决此冲突,您必须在项目的 pubspec.yaml 文件中添加手动条目。

dependency_overrides:
  archive: 3.1.2  //any version you want for resolution.

要了解如何 flutter 解决依赖关系,请查看下面的 link。 https://medium.com/cashify-engineering/flutter-dependencies-resolution-2faecdbfce03

此 link 还描述了解决此类依赖冲突的标准方法。