关于flutter pubspec.yaml动态版本号问题

2021.3.25 update:

今天看到一段关于NPM的包管理的版本号说明,感觉和flutter package这块比较像。

版本号

使用NPM下载和发布代码时都会接触到版本号。NPM使用语义版本号来管理代码,这里简单介绍一下。

语义版本号分为X.Y.Z三位,分别代表主版本号、次版本号和补丁版本号。当代码变更时,版本号按以下原则更新。

  • 如果只是修复bug,需要更新Z位。
  • 如果是新增了功能,但是向下兼容,需要更新Y位。
  • 如果有大变动,向下不兼容,需要更新X位。

版本号有了这个保证后,在申明第三方包依赖时,除了可依赖于一个固定版本号外,还可依赖于某个范围的版本号。例如"argv": "0.0.x"表示依赖于0.0.x系列的最新版argv。

NPM支持的所有版本号范围指定方式可以查看官方文档。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

问题:

拉出老的release库的代码,发现flutter部分的代码无法编译通过,打不出老的release包。

 

问题分析:

develop分支flutter库代码中的pubspec.yaml中的版本号都是动态模式。

加了^符号,会默认指向a.b.c 版本号中c的最高位置。

例如: ^0.1.2

关于flutter pubspec.yaml动态版本号问题_第1张图片

如果远端的pub库上的最新版本是0.1.3,那么本地使用的实际最终会是0.1.3。

在自动对齐的过程中,有可能出现一些三方库的api变更,导致flutter编译的时候第三方库指向了最新版本的不同的代码。

 

解决办法:

把host入口工程的pubspec.lock文件加入到git 版本管理中。打release分支的时候,跟随代码带过去。flutter pub get 会导致pubspec.lock override,所以jenkins上构建,直接flutter build bundle。

 

关于工程中什么地方应该pubspec.lock ignore?

application packages工程保留。

library packages工程git ignore。

https://stackoverflow.com/questions/16136739/in-dart-and-pub-should-i-add-pubspec-lock-to-my-gitignore

 

 

你可能感兴趣的:(dart,flutter,dart,flutter,ci/cd,pubspec,动态版本号)