依赖包版本控制

Flutter工程的依赖包的配置文件是工程根目录下的pubspec.yaml文件,通过里面的dependencies来指定。

最近,因为更新了Flutter,发现工程启动不了,提示的错误是android的部分包升级到了andriodx。看了下官方关于如何升级把工程升级支持androidx的介绍,发现改动有点大,就放弃升级的想法。

官方的升级androidx的文档地址: 安卓工程适配AndroidXopen in new window

于是,我想到了第二种方法,就是将我的依赖包中需要AndroidX支持的包降级到之前的版本。

经过查找,我发现我用的依赖包有一个用到了AndroidX,当前在pubspec.yaml文件中的版本号为:

flutter_webview_plugin: ^0.3.5

这是一个Flutter下的WebView插件,我翻看了该插件的更新日志,发现该插件从0.3.3版本开始支持AndroidX,于是,我想到了回退到0.3.2版本,最后修改如下:

flutter_webview_plugin: 0.3.2

*注意:*一定要去掉版本号之前的^,因为Flutter的版本号控制使用的是Caret语法,下面的是Caret语法在版本号中使用的介绍:

Caret syntax provides a more compact way of expressing the most common sort of version constraint. ^version means “the range of all versions guaranteed to be backwards compatible with the specified version”, and follows pub’s convention for semantic versioning. For example, ^1.2.3 is equivalent to '>=1.2.3 <2.0.0', and ^0.1.2 is equivalent to '>=0.1.2 <0.2.0'. The following is an example of caret syntax:

dependencies:
  path: ^1.3.0
  collection: ^1.1.0
  string_scanner: ^0.1.2

Note that caret syntax was added in Dart 1.8.3. Older versions of Dart don’t understand it, so you’ll need to include an SDK constraint (using traditional syntax) to ensure that older versions of pub will not try to process it. For example:

environment:
  sdk: '>=1.8.3 <3.0.0'

从以上的介绍可以得之^3.3.2的版本号的意思,实际上等于3.3.2到4.0.0,那么它还是会去拿最新的3.3.5的版本,而我们这里是需要flutter_webview_plugin的指定版本3.3.2,所以我们一定要记住去掉版本号前面的^。

Last Updated:
Contributors: 小5