一款不错的Flutter SDK多版本管理工具


highlight: androidstudio
theme: juejin

生命不息折腾不止,不论是积极拥抱变化主动升级 Flutter 版本亦或是被逼无奈被动升级 Flutter 版本,你总逃不过在多 Flutter 版本间来回切换的场景。想逃的办法也有,弃坑 Flutter。 😁

身患重疾,又名懒癌。要我另辟蹊径折腾,我当然是一万个不愿意滴,

如果要在多个 Flutter 版本间切换,我的做法一般是这样的:直接下载,然后在 Android Studio 中手动切换,如:

偶尔切切,其实也还好,毕竟当前项目 Flutter 版本变化不大,需求不多。

今天编译https://github.com/AppFlowy-IO/AppFlowy 项目,刚好 VSCode 遇到 报错:

然后懒癌又发作,懒得切 Android Studio 了,想在 VSCode 上切换 flutter 版本。

搜了下,发现了这货‣。兴致一来,打算试试。

FVM 是个啥东西

官方简介:Flutter Version Management: A simple CLI to manage Flutter SDK versions.

简单说就是:一个 Flutter 版本管理工具。

难道这货比俺手动 Android Studio 切换更容易? 玩玩吧,反正闲着也是闲着~~~。

如何安装

“千辛万苦”找了个 window 的安装步骤如下:

  1. powershell 管理员身份运行命令行
  2. 执行如下命令安装 choco(choco 是啥先不管,fvm 安装需要这玩意)
1
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'))
  1. 检验下 choco 是否安装成功
1
choco -v

如果命令行里找不到 choco,明显是要将 choco 配置到系统环境变量中。这就不细说了自行谷哥吧,俺深深明白再多讲只会拉低本文档次,本文目标人群是高富帅和白富美。

  1. 安装成功了 choco 不能浪费,choco 用起来
1
choco install fvm

这样经历上述翻山越岭,跋山涉水后。恭喜你,终于把 fvm 安装上了。

配置

那么新问题来了,我 C 盘小的可怜,这样那样的软件默认都悄咪咪往里面装。所以这里需要配置下 fvm 下载文件缓存路径,不能到 C 盘。C 盘何其珍贵,flutter sdk 都下载到 C 盘不就等于要了我的老命么?

不管三七二十一吧,来个 FVM_HOME 系统环境配置,默认指定到你想要缓存的路径。

注意哈,FVM_HOME这个是较旧的缓存目录,笔者在其他电脑上重新安装fvm时候版本是3.17 目录变更成FVM_CACHE_PATH了

默认 fvm 下载地址是 C 盘,所以还需要命令更新掉原来老的缓存值:

1
fvm config –-cache-path D:\Flutter-SDK\

这样,解决了老夫的第二个烦恼,将宝贵的 C 盘空间节约下来。

下载 Flutter 版本

什么? 还要下载 Flutter 版本,那我之前下载的版本岂不是废了,躺尸在 D 盘不浪费空间么?唉,下就下吧,走上了这条 FVM 不归路,还能怎样?

怎么下载咧?

简单,得先看看有什么可以下载的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
λ 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 为例说明

1
fvm install 3.0.5

这样就下载了 3.0.5 当然这个过程中 fvm 也会帮你下载和安装对于的 dart 版本。

明显感觉 fvm install 有点香啊,不用到官网看 stable 版本,然后下载 zip 包,然后解压了。这里一个命令行搞定。

这样可以再执行如下命令来看看当前 fvm 可识别的和切换的版本列表

1
fvm list

结果如下:

1
2
3
4
5
6
λ 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 版本,看到是生效的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

λ 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 真香,用起来~~~。