生命不息折腾不止,不论是积极拥抱变化主动升级 Flutter 版本亦或是被逼无奈被动升级 Flutter 版本,你总逃不过在多 Flutter 版本间来回切换的场景。想逃的办法也有,弃坑 Flutter。 😁
身患重疾,又名懒癌。要我另辟蹊径折腾,我当然是一万个不愿意滴,
如果要在多个 Flutter 版本间切换,我的做法一般是这样的:直接下载,然后在 Android Studio 中手动切换,如:
偶尔切切,其实也还好,毕竟当前项目 Flutter 版本变化不大,需求不多。
今天编译github.com/AppFlowy-IO… 项目,刚好 VSCode 遇到 报错:
然后懒癌又发作,懒得切 Android Studio 了,想在 VSCode 上切换 flutter 版本。
搜了下,发现了这货‣。兴致一来,打算试试。
FVM 是个啥东西
官方简介:Flutter Version Management: A simple CLI to manage Flutter SDK versions.
简单说就是:一个 Flutter 版本管理工具。
难道这货比俺手动 Android Studio 切换更容易? 玩玩吧,反正闲着也是闲着~~~。
如何安装
“千辛万苦”找了个 window 的安装步骤如下:
- powershell 管理员身份运行命令行
- 执行如下命令安装 choco(choco 是啥先不管,fvm 安装需要这玩意)
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
- 检验下 choco 是否安装成功
choco -v
如果命令行里找不到 choco,明显是要将 choco 配置到系统环境变量中。这就不细说了自行谷哥吧,俺深深明白再多讲只会拉低本文档次,本文目标人群是高富帅和白富美。
- 安装成功了 choco 不能浪费,choco 用起来
choco install fvm
这样经历上述翻山越岭,跋山涉水后。恭喜你,终于把 fvm 安装上了。
配置
那么新问题来了,我 C 盘小的可怜,这样那样的软件默认都悄咪咪往里面装。所以这里需要配置下 fvm 下载文件缓存路径,不能到 C 盘。C 盘何其珍贵,flutter sdk 都下载到 C 盘不就等于要了我的老命么?
不管三七二十一吧,来个 FVM_HOME 系统环境配置,默认指定到你想要缓存的路径。
注意哈,FVM_HOME这个是较旧的缓存目录,笔者在其他电脑上重新安装fvm时候版本是3.17 目录变更成FVM_CACHE_PATH了
默认 fvm 下载地址是 C 盘,所以还需要命令更新掉原来老的缓存值:
fvm config –-cache-path D:\Flutter-SDK\
这样,解决了老夫的第二个烦恼,将宝贵的 C 盘空间节约下来。
下载 Flutter 版本
什么? 还要下载 Flutter 版本,那我之前下载的版本岂不是废了,躺尸在 D 盘不浪费空间么?唉,下就下吧,走上了这条 FVM 不归路,还能怎样?
怎么下载咧?
简单,得先看看有什么可以下载的
λ fvm releases
Feb 27 18 │ v0.1.6
Mar 6 18 │ v0.1.8
Mar 7 18 │ v0.1.9
Mar 7 18 │ v0.2.0
Mar 12 18 │ v0.2.1
Mar 13 18 │ v0.1.5
Mar 16 18 │ v0.2.2
Mar 20 18 │ v0.2.3
Mar 26 18 │ v0.2.4
Mar 30 18 │ v0.2.5
Mar 30 18 │ v0.2.6
Apr 2 18 │ v0.2.7
Apr 2 18 │ v0.2.3
Apr 3 18 │ v0.2.8
.....
这样就可以看到所有 flutter 版本了,别告诉为啥知道这个命令,fvm —help。
考虑到兼容之前已经下载一些版本,这里直接重新下载之前三个老版本即可。安装命令如下,这里以安装 flutter 3.0.5 为例说明
fvm install 3.0.5
这样就下载了 3.0.5 当然这个过程中 fvm 也会帮你下载和安装对于的 dart 版本。
明显感觉 fvm install 有点香啊,不用到官网看 stable 版本,然后下载 zip 包,然后解压了。这里一个命令行搞定。
这样可以再执行如下命令来看看当前 fvm 可识别的和切换的版本列表
fvm list
结果如下:
λ fvm list
Cache Directory: D:\Flutter-SDK\versions
3.7.3 (global)
3.0.5
2.10.3
已有 flutter 版本处理
原下载 flutter 版本
谁还没个无知的时候,不知道 fvm 之前大家不都是乐滋滋下载 zip 然后解压,谁还想到过管理呢? 是吧。这边以前版本怎么善后呢?这是一个问题。
我的方法很简单了,全部删掉,人穷志短嘛,身为一个穷逼屌丝,我岂能忍它躺尸在我 D 盘浪费空间?
果不其然,以前三个版本耗费了 7G+ 空间,一删又是一笔巨大的财富。
更新路径
再就是更新下系统环境变量中默认配置。
比如,原来环境变量 Path 中配置
flutter 默认路径值是:D:\Flutter\FlutterSDK\2.10.3\bin;
Dart 默认路径值是:D:\Flutter\FlutterSDK\2.10.3\bin\cache\dart-sdk\bin
你得更新到现在的 Flutter 目录路径
flutter 默认路径值设置为:D:\Flutter-SDK\default\bin;
Dart 默认路径值是:D:\Flutter-SDK\default\bin\cache\dart-sdk\bin
有人说:default 是个什么鬼?我本地没这路径啊,default 的意思可以理解成当前使用的 flutter 版本。
比如: 你当前使用 flutter 版本是 3.0.5 那么 default 指 3.0.5 ; 如果你当前用的是 2.10.3 那 default 就是 2.10.3 。
这个 default 目录 fvm 会帮你自动生成,如下,fvm 切哪个版本,就会拷贝 versions 中的版本到 default 中。
当然还有 Android Studio 中,自行指定就可。
如何使用
fvm —help 应该说的很清楚了,网上大部分用了 fvm use xxx 命令来切换,我本人习惯全局切。
这里重点说下 fvm global 。 该命令是切换全局 flutter 版本的,我尝试用了下,发现 fvm global 切换过程中会报错,说设置的默认路径不对导致。
系统环境变量 Path 中指定 flutter 版本必须这样:D:\Flutter-SDK\default\bin; 如果指定一个固定版本,切换不会生效。这也是上面要更新 path 中路径原因。
在重新设置后,效果如下:
在我切换到 3.0.5 和 2.10.3 后,用 flutter —version 查看当前 flutter 版本,看到是生效的。
λ fvm list
Cache Directory: D:\Flutter-SDK\versions
3.7.3 (global)
3.0.5
2.10.3
λ fvm global 3.0.5
Flutter "3.0.5" has been set as global
λ flutter --version
Flutter 3.0.5 • channel stable • https://github.com/flutter/flutter.git
Framework • revision f1875d570e (10 months ago) • 2022-07-13 11:24:16 -0700
Engine • revision e85ea0e79c
Tools • Dart 2.17.6 • DevTools 2.12.2
λ fvm global 2.10.3
Flutter "2.10.3" has been set as global
λ flutter --version
Flutter 2.10.3 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 7e9793dee1 (1 year, 2 months ago) • 2022-03-02 11:23:12 -0600
Engine • revision bd539267b4
Tools • Dart 2.16.1 • DevTools 2.9.2
总结
懒确实不好,对码农来说学会偷懒才是好,fvm 真香,用起来~~~。