flutter项目pubspec.yaml和pubspec.lock之间的关系

pubspec.yaml:是依赖版本的第一个配置文件;

pubspec.lock: 是依赖版本的第二个配置文件;作用是根据pubspec.yaml配置生成的具体依赖版本;

为什么会有2个版本依赖配置呢?

举个例子:

1、pubspec.yaml中的这个插件为:

sqflite: ^2.2.2

2、执行flutter pub get,对应pubspec.lock为:

sqflite:
  dependency: "direct main"
  description:
    name: sqflite
    url: "https://pub.flutter-io.cn"
  source: hosted
  version: "2.2.8+4"

3、这个时候出现的版本2.2.8+4和实际配置的2.2.2不一样,原因是就使用^导致,它的作用代表:2.2.2——3.0.0之间的版本,只要服务器有更新,每次你执行flutter pub get命令的时候,都会实时更新,这样可能会引发2次编译版本依赖不一样,导致不可预知的错误。

4、解决方法:

可以pubspec.yaml写死配置:sqflite: 2.2.2,这样就不会自动更新版本,以后有需要再手动更新。

对应的pubspec.lock为:

sqflite:
  dependency: "direct main"
  description:
    name: sqflite
    url: "https://pub.flutter-io.cn"
  source: hosted
  version: "2.2.2"

5、关于^的作用说明:

^0.0.1:0.0.1——0.0.2之间的版本;

^0.1.0:0.1.0——0.2.0之间的版本;

^1.0.0:1.0.0——2.0.0之间的版本;

6、pubspec.lock需要加到.gitignore文件中去,不需要提交到服务,因为每次执行flutter pub get的时候会自动生成。如果生成的名称没有_ios结尾的,只有_foundation,则需要把本地的fluuter sdk升级到3.0版本以上,否则在studio上运行会报错,如下图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值