Flutter多版本管理 — FVM

简介

FVM(Flutter Version Management),官网介绍为:简单、强大、灵活的工具来理多个Flutter SDK版本。

帮助开发者解决了:

  • 需要同时使用多个Flutter SDK
  • SDK测试需要频繁切换分支
  • 分支切换速度慢,且需要反复重装(典型的使用git来切换)
  • 难以管理应用所使用的最新SDK版本
  • Flutter大版本更新需要对整个应用进行迁移
  • 团队内部开发环境会出现不一致的情况

使每个项目工程都可以对应不同版本的Flutter。

安装

MacOS

使用Homebrew来安装,若未安装,可使用以下命令傻瓜式安装:

ruby 复制代码
// Homebre国内镜像安装,推荐使用阿里镜像源
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

安装FVM

bash 复制代码
brew tap leoafarias/fvm
brew install fvm

卸载FVM

bash 复制代码
brew uninstall fvm
brew untap leoafarias/fvm

就OK了。

Windows

安装方法一

通过pub来全局安装fvm

csharp 复制代码
dart pub global activate fvm

这点官方给了⚠️:

This is not recommended if you plan on using FVM to manage your global Flutter install.

--- 如果您计划使用FVM来管理您的全局Flutter安装,则不建议这样做。

安装方法二

通过choco来安装,choco是一个包管理工具,类似于Mac的brew。

arduino 复制代码
// 查看是否安装
choco -v
arduino 复制代码
// 更新choco
choco upgrade chocolatey

安装FVM

复制代码
choco install fvm

安装过程遇到询问直接输入 Y 即可。

常用命令

c 复制代码
// 查看版本
fvm --version

// 查看所有远程版本
fvm releases

// 需要安装的版本
// 也可以从官网下载指定版本压缩包,并将其解压到 versions 文件夹中
fvm install 3.27.1

// 卸载flutter版本
fvm remove 3.27.1

// 查看本地已装的版本;若在项目目录下执行此命令,可获取当前的使用版本
fvm list

// 指定工程要使用的版本,在程序根目录或开发工具的终端运行命令
// 会生产一个.fvm文件夹在项目中,在git的忽略文件中,不会影响项目的git管理。
fvm use 3.7.10

// 使用最新的稳定通道版本
fvm use stable

// 设置全局版本
fvm global 3.7.10

// 设置fvm配置
// 若更改默认的缓存文件位置: fvm config --cache-path <CACHE_PATH> 
fvm config

// 代理dart命令
fvm dart

// 通过删除FVM目录销毁FVM缓存
fvm destroy

// 显示有关环境和项目配置的信息
fvm doctor

// 使用配置的Flutter SDK执行脚本
fvm exec

// 在不同的项目风格之间切换
fvm flavor

// 在Flutter版本上生成命令
fvm spawn

// 使用指定 SDK 版本运行构建
fvm spawn 3.13.9 flutter build

// 使用不同版本的 SDK 运行测试
fvm spawn 2.2.3 flutter test

// 将之前安装的flutter加到fvm目录中
// version 为版本号
fvm import [version]

// 代理flutter命令,当前项目运行Flutter相关命令
fvm flutter --version
fvm flutter doctor
fvm flutter clean
fvm flutter pub get
fvm flutter run 
...

项目工程设置

打开对应的项目工程,进入IDE的设置中,选择Flutter,并选择对应的版本,最后Apply即可,Dart会自动跟随切换对应的版本。

接下来就可以愉快地开发了!!

相关推荐
molihuan8 小时前
最新 spine 4.3 flutter 适配鸿蒙
flutter·动画·harmonyos·鸿蒙·spine
GitLqr9 小时前
StatefulWidget 里的隐形炸弹:为什么不要在 State 类中使用 context.mounted
flutter·面试·dart
恋猫de小郭2 天前
Android R8 为什么可以让 Kotlin 协程提速 2 倍?
android·前端·flutter
杉氧2 天前
弹性滚动的奥秘:在 Flutter 中使用 CustomScrollView 与 Sliver 打造极致流畅列表
android·前端·flutter
张风捷特烈2 天前
Flutter UI 解耦 - 天下大势,合久必分, 分久必合
android·前端·flutter
Patrick_Wilson2 天前
从 React 到 Flutter:写给前端的一张跨端知识地图
前端·flutter·react.js
奎叔2 天前
Flutter 分层架构:从页面堆叠到可演进的业务边界
flutter
奎叔2 天前
Flutter 客户端 Trace 与稳定性治理:从链路追踪到灰度、降级和复盘
flutter
GitLqr2 天前
别被“Flutter 传感器延迟 150ms”带偏了:这可能只是你的实现方式错了
flutter·架构·kotlin
杉氧2 天前
Flutter 像素级还原实战:用 CustomPaint 与 Bezier 曲线手绘精致图针
android·前端·flutter