做flutter开发的小伙伴应该知道,当同时维护多个项目的情况下,经常会出现不同项目使用着不同版本的sdk,从而需要不停的切换sdk版本。这时候就需要对flutter sdk进行多版本的管理。
不知道小伙伴们有没有遇到过这种情况,当有新接手的项目和旧项目sdk版本不一致时,
直接把本地的sdk版本给更新了,结果可想而知,当旧项目需要迭代的时候发现,来的时候好好的,回不去了。。。于是每次切换项目都傻傻的重新下载对应的sdk,再pub get一下,大半天就没了。
最简单的办法就是本地同时保留多个版本sdk,每次切换项目时改一下环境变量指向对应的sdk就可以了。
其实Flutter有专门的多版本管理工具FVM,可以单独为某个项目设置flutter版本,也可以全局设置版本。
mac环境下安装**
可参考官网
- 安装 fvm
brew tap leoafarias/fvm
brew install fvm
- 设置sdk安装目录:
在mac下flutter sdk的默认目录是在~/fvm,可以通过以下命令修改设置
fvm config --cache-path <flutter sdk path>
修改后可以通过fvm config
查看设置
- 安装指定的sdk版本
fvm install 3.3.8
这种方式下载会比较慢,可以直接前往flutter官网下载需要的sdk版本,放入上述fvm配置的sdk文件目录。
- 查看所有已经安装的sdk
fvm list
- 设置全局sdk版本
fvm global 3.3.8
fvm global设置全局sdk版本后会在~/fvm下生成一个default文件夹,需要设置环境变量,如下:
# flutter sdk
export PATH=${PATH}:~/fvm/default/bin
# dart sdk
export PATH=${PATH}:~/fvm/default/bin/cache/dart-sdk/bin
export PATH=${PATH}:~/.pub-cache/bin
- 项目单独设置sdk版本
进入项目目录
fvm use 3.3.8
vscode配置:
编辑 .vscode/settings.json
{
"dart.flutterSdkPath": ".fvm/flutter_sdk",
// Remove .fvm files from search
"search.exclude": {
"**/.fvm": true
},
// Remove from file watching
"files.watcherExclude": {
"**/.fvm": true
}
}
Android Studio配置:
修改 .idea/workspace.xml,加入
<component name="VcsManagerConfiguration">
<ignored-roots>
<path value="$PROJECT_DIR$/.fvm/flutter_sdk" />
</ignored-roots>
</component>
如图:
在此配置对应sdk路径
fvm还支持图形界面操作sidekick,可以自行去了解