Windows环境下使用fvm管理多版本Flutter(flutter版本升级回退)
安装FVM
方式一:
使用choco安装fvm(当时环境中Flutter版本是1.22.4,Dart是2.10.4,安装时报错,没再继续,使用了方式二)
choco install fvm
方式二:(使用的该方式)
使用dart的pub进行安装
dart pub global activate fvm
使用方式二安装成功后,使用fvm命令时却闪退了,查了很久发现是Dart版本过低的原因导致,感觉方法一的失败原因应该也是因为版本过低导致的
接下来升级Flutter版本,因为升级Flutter版本会自动适配对应的Dart版本,翻阅别人的坑据说单独升级Dart版本会出问题,但并没试过,既然都说了是坑了,还踩它干嘛
升级版本
flutter upgrade
出现问题:
ProcessException: Process exited abnormally:
fatal: unable to access 'https://github.com/flutter/flutter.git/': OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054
Command: git fetch --tags
解决办法:修改git缓存值大小:
git config --global http.postBuffer 524288000
接着又出现问题:
ProcessException: Process exited abnormally:
fatal: unable to access 'https://github.com/flutter/flutter.git/': Failed to connect to github.com port 443: Timed out
Command: git fetch --tags
解决办法:使用代理
git config --global --unset http.proxy
之后又出现问题:
Your flutter checkout has local changes that would be erased by upgrading. If you want to keep these changes, it is recommended
that you stash them via "git stash" or else commit the changes to a local branch. If it is okay to remove local changes, then
re-run this command with --force.
解决办法:添加 --force 强制执行
flutter upgrade --force
用git reset,可以指定到某个版本,也可以回退版本
回退版本,进入flutter的目录下,运行指令:git reset --hard commit-id
git reset --hard commit-id
使用flutter --version
查看版本,此时会自动下载对应版本的Dart
commit-id
可以在 github.com/flutter/flutter中查看到
找到需要的Flutter版本
升级后,使用方法二再次安装fvm
接下来继续操作fvm
1、系统环境变量,Path中添加C:\Users\{自己的用户名}\AppData\Local\Pub\Cache\bin
2、关闭并重启命令行,使用fvm命令,发现已经不闪退了
3、默认fvm的下载地址是在C盘,改一下:
配置fvm下载地址:fvm config --cache-path E:\fvm\versions\
fvm config --cache-path E:\fvm\versions\
4、此时可以查看一下 fvm列表 ,目前是空的
fvm list
接下来就可以在配置的fvm下载地址中下载各种版本的Flutter了
fvm install 1.22.4
再查看下fvm list
5、把项目中的ignore文件添加:
# fvm
.fvm/flutter_sdk
6、执行fvm use 1.22.4
在项目根目录下使用 fvm list 发现当切换到的版本这里会显示(active)
执行命令,如果出现Android Studio没有权限,设置Android Studio快捷方式为管理员权限打开
当前项目的版本已经切换成功了
7、把AndroidStudio的FlutterSDK路径换一下
换到FVM刚修改过的下载目录下,Dart不用管,他会自动找到,直接Apply
想看项目是否已经正确更换了版本,请看下图红框部分区别:
最后如果发现项目中还是报错,那么就需要使用下面的命令并重启一下AndroidStudio试试吧
fvm flutter clean
fvm flutter pub get