为了控制所有间接依赖项的版本,我将pubspec.lock的所有依赖项移到pubspec.yaml中。我比较了pubspec.yaml和pubspec.lock之间的差异,最后pubspec.yaml如下所示:
name: xxxx
description: A new flutter plugin project.
version: 0.0.1
homepage:
environment:
sdk: ">=2.12.0 <3.0.0"
flutter: ">=1.20.0"
dependencies:
flutter:
sdk: flutter
# flutter packages=========
async: 2.6.1
boolean_selector: 2.1.0
characters: 1.1.0
charcode: 1.2.0
clock: 1.1.0
collection: 1.15.0
fake_async: 1.2.0
ffi: 1.1.2
matcher: 0.12.10
meta: 1.3.0
path: 1.8.0
sky_engine: 0.0.99
source_span: 1.8.1
stack_trace: 1.10.0
stream_channel: 2.1.0
string_scanner: 1.1.0
term_glyph: 1.2.0
test_api: 0.3.0
typed_data: 1.3.0
vector_math: 2.1.0
dev_dependencies:
flutter_test:
sdk: flutter然后我得到一个错误:
发布失败(1;因为xxx依赖于要求SDK版本<2.0.0的sky_engine >=0.0.2,版本解决失败)。
错误很明显,sky_engine需要SDK版本的<2.0.0。但是sky_engine是flutter的一个依赖项,在我转到pubspec.yaml之前,一切都正常工作。
我的问题:
sky_engine在没有版本问题的pubspec.lock中工作?如果我不降低颤振sdk版本,我如何解决当前的问题?发布于 2021-06-23 06:47:02
为什么sky_engine在没有版本问题的pubspec.lock中工作?
我不确定,但我的猜测是,Flutter中的引用是从颤振SDK中提取的,但是将其添加到您的公共规范中的方式是试图从pub中提取这个很旧的包裹。
如果我不降低颤振sdk版本,我如何解决当前的问题?
您可以将sky_engine从列表中删除。它将通过您的颤振SDK进行隐式版本化。然而:
如果我想控制所有间接依赖的版本,还有更好的方法吗?
是的,您最好提交pubspec.lock文件(并且只在pubspec.yaml中列出特定的依赖项)。这是为您的应用程序建议的实践:
https://dart.dev/guides/libraries/private-files#pubspeclock
对于应用程序包,我们建议您提交
pubspec.lock文件。保存pubspec.lock确保每个在应用程序上工作的人都使用完全相同的版本。
但是,如果您正在创建包/可重用库,那么这样做可能会为使用包的项目创建不必要的版本约束,因此这可能不是一个好主意。但你没说你为什么要这么做。
发布于 2021-06-23 07:16:15
我重新检查了pubspec.lock文件,发现SDK取决于方式,我写错了。我是pubspec.lock
# Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile
packages:
async:
dependency: "direct main"
description:
name: async
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.6.1"
boolean_selector:
dependency: "direct main"
description:
name: boolean_selector
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.1.0"
characters:
dependency: "direct main"
description:
name: characters
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.0"
charcode:
dependency: "direct main"
description:
name: charcode
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.2.0"
clock:
dependency: "direct main"
description:
name: clock
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.0"
collection:
dependency: "direct main"
description:
name: collection
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.15.0"
fake_async:
dependency: "direct main"
description:
name: fake_async
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.2.0"
ffi:
dependency: "direct main"
description:
name: ffi
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.2"
flutter:
dependency: "direct main"
description: flutter
source: sdk
version: "0.0.0"
flutter_test:
dependency: "direct dev"
description: flutter
source: sdk
version: "0.0.0"
matcher:
dependency: "direct main"
description:
name: matcher
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.12.10"
meta:
dependency: "direct main"
description:
name: meta
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.3.0"
path:
dependency: "direct main"
description:
name: path
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.8.0"
sky_engine:
dependency: "direct main"
description: flutter
source: sdk
version: "0.0.99"
source_span:
dependency: "direct main"
description:
name: source_span
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.8.1"
stack_trace:
dependency: "direct main"
description:
name: stack_trace
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.10.0"
stream_channel:
dependency: "direct main"
description:
name: stream_channel
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.1.0"
string_scanner:
dependency: "direct main"
description:
name: string_scanner
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.0"
term_glyph:
dependency: "direct main"
description:
name: term_glyph
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.2.0"
test_api:
dependency: "direct main"
description:
name: test_api
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.3.0"
typed_data:
dependency: "direct main"
description:
name: typed_data
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.3.0"
vector_math:
dependency: "direct main"
description:
name: vector_math
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.1.0"
sdks:
dart: ">=2.12.0 <3.0.0"
flutter: ">=1.20.0"我发现sources of sky_engine、flutter和flutter_test都是sdk,然后我提到了pubspec.yaml中使用的flutter和flutter_test,所以我编写了下面的文章,它很有效。
sky_engine:
sdk: flutter再加上@Danny Tuppeny的建议,我现在有两种控制间接依赖的方法:
pubspec.yamlpubspec.lock提交到远程存储库的应用程序https://stackoverflow.com/questions/68094765
复制相似问题