Flutter工程代码管理 pubspec.yaml、.pubcache 与 pubspec.lock文件的使用注意事项

简单介绍总结下这三个文件的作用

pubspec.yaml: Dart包的配置文件,管理 Flutter 工程代码的依赖,比如第三方库、Dart 运行环境、Flutter SDK 版本都可以通过它来进行统一管理。所以,pubspec.yaml 与 iOS 中的 Podfile 在功能上是类似的。

.pubcache: 用于管理Pub的本地Package 存。使用`pub cache add`命令将新的 Package 添加至缓存。也可以使用`pub cache repair`命令将Package从缓存中清除并重新安装。

pubspec.lock: 自动创建 pubspec.lock 文件,pubspec.lock 文件的作用类似 iOS 的 Podfile.lock文件,用于记录当前状态下实际安装的各个直接依赖、间接依赖的包的具体来源和版本号。

pubspec.yaml的使用

打开工程,找到pubspec.yaml文件并打开,如图:


截屏2021-11-16 17.56.18.png

以工程为例,依赖第三方库的设置方式为fluttertoast ^3.1.0^的意思为大于等于3.1.0小于4.0.0,若需要设置指定版本,最佳的设置方式为fluttertoast 3.1.0,即指定固定版本,无论使用pub get还是pub upgrade都不能让其版本变更。

pub getpub upgrade的使用

pub get(类似iOS里的pod install) 和 pub upgrade (类似iOS里的pod update)之间的主要区别是:如果lock文件已经存在,pub get使用指定的依赖的版本或者.pubcache里的缓存版本。如果一个依赖项没有被指定,pub upgrade将获得满足所有版本约束的那个依赖项的最新版本。这是pub getpub upgrade之间的主要区别,pub upgrade它总是尝试获取所有依赖项的最新版本。一般来讲,不提倡使用pub upgrade命令,因为使用新版本的第三方库可能会带来不可预知的问题,譬如新版本API的变更、编译报错以及app发布后上线后崩溃率增加(也有可能减少)等。不得不使用pub upgrade的时候,确保只更改所需要更改的依赖库或者插件代码。

pubspec.lock的使用

pubspec.lock在多人开发协作中有很重要的作用,譬如开发人员a使用了新的依赖库或者更新了插件代码后, pubspec.lock会变更相应的版本号或者commit号,将pubspec.lock上传后,开发人员b拉取新到新的pubspec.lock文件后,使用Pub get命令就会自动获取新的依赖库或者更新了插件代码。如果不上传pubspec.lock文件,开发人员b可能就会碰到依赖库版本不一致、编译报错的问题。

开发中常见的问题

开发人员经常在开发过程中碰到使用pub get命令后没有拉取到最新代码的问题,所以不得不使用pub upgrade命令,如上文所述,不提倡使用pub upgrade命令。那怎样解决这个问题呢?之所以产生这个问题,是因为依据缓存优先的策略,有缓存则优先使用缓存,在pubspec.yaml和pubspec.lock没有改变的情况下,git工具会从缓存文件里寻找最近的代码导入到工程,并不会拉取依赖库或者插件最新代码。解决办法主要有以下两种:
1.在pubspec.yaml中使用commit号,pub get命令拉取到所需要的代码(若不想使用commit号,就想使用分支的话,可恢复pubspec.yaml文件)。此时pubspec.lock文件也有相应的变更,然后上传pubspec.lock文件。如下图所示:

截屏2021-11-17 11.41.38.png

拉取代码后的pubspec.lock文件也会有相应变更,如图:

截屏2021-11-17 11.41.18.png

2.找到.pubcache文件,再找到对应的依赖库文件,然后删除相应的依赖库或者插件。再使用pub get命令,因为没有缓存,git工具会拉取依赖库或者插件指定分支上的最新代码。提倡使用第一种方法,简单方便。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容