如何解决Flutter中的依赖冲突

cubegao 2021-04-22 AM 771℃ 0条

前言

今天更新第三方依赖库,执行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

大功告成~

标签: Flutter

非特殊说明,本博所有文章均为博主原创。

评论啦~