前言
今天更新第三方依赖库,执行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大功告成~