前言
今天更新第三方依赖库,执行flutter pub get
后,报错了
Because project depends on path_provider 1.6.8 which doesn't match any versions, version solving failed. pub get failed (1; Because project depends on path_provider 1.6.8 which doesn't match any versions, version solving failed.) Process finished with exit code 1
分析为什么会出现冲突
查看文件pubspec.yaml
是这个样子的
dependencies:
path_provider: ^1.6.8
我们在开发Flutter
项目中,经常会依赖第三方库。如果两个第三方库,同时依赖了某个库。比如库A
要求path_provider
最低版本为1.5.0
,库B
要求path_provider
最低版本为1.6.8
,当path_provider
的版本更新为1.6.8
时,虽然符合库B
的要求,但是不符合库A
的要求,这个时候就冲突报错了。
如何解决
修改版本为any。
dependencies:
path_provider: any
运行flutter pub upgrade
。
设置any
后,pub
的版本分析器会自动分析当前的依赖版本,寻找合适的能够避免冲突的依赖版本并下载。
后续
但是我们不能每次flutter clean
后再去执行,都让pub
的版本分析器去分析,这会有一定的耗时。而且这相当于写了一个不确定的版本号在项目中。如果交付人员打包的时候,恰好碰到了第三方库版本更新,有可能会打出会crash
的包,所以我们需要把any
替换为实际的版本号。
使用pubspec.lock
找到正确的版本
path_provider:
dependency: "direct main"
description:
name: path_provider
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.5.0"
可以看到版本分析器为我们找到的无冲突的依赖版本号为1.5.0
。
这时我们可以回到文件pubspec.yaml
中,修改为
dependencies:
path_provider: 1.5.0
大功告成~