Linux 上管理 Flutter 版本的主流做法
使用 Flutter 自带的 channel 在 stable / beta / dev / master 之间切换,适合个人学习或单一项目随官方节奏更新的场景。优点是原生支持、切换简单;缺点是只能全局生效、无法多版本共存、无法精确锁定到某个 tag/commit,团队协作时容易出现环境不一致。配合 flutter upgrade 可升级到当前通道最新版本。
使用 FVM(Flutter Version Manager) 进行按项目版本管理与多版本共存,适合多项目并行、需要精确锁定版本(含 tag/commit)、以及 CI/CD 稳定复现构建的场景。FVM 会在项目根目录生成 .fvm/ 配置,便于团队统一版本;支持全局/项目级切换,减少全局环境被意外改动的风险。
使用通用版本管理器 asdf 管理 Flutter 版本,适合已经使用 asdf 管理多语言/多工具链的团队。通过 asdf 插件安装 flutter,可在不同项目设置 global/local 版本,统一工具链治理体验。
使用 Puro 作为替代方案,强调更快的安装与切换(全局 Git 对象去重、引擎共享缓存),并支持全局或按项目环境管理、自动同步 VS Code/IntelliJ 的 SDK 设置,适合对磁盘占用与切换性能敏感的场景。
FVM 实操步骤(Linux 推荐)
安装 FVM(示例为 Linux + Homebrew)
brew tap leoafarias/fvm
brew install fvm
echo 'export PATH="$HOME/fvm/default/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
fvm --version
说明:FVM 允许多个 Flutter 版本共存,并通过项目级配置实现版本锁定与快速切换。
常用 FVM 命令
# 查看已安装版本
fvm list
# 为当前项目使用指定版本(会生成 .fvm/ 配置)
fvm use 3.19.6
# 全局默认版本
fvm global stable
# 移除某版本
fvm remove 3.16.0
# 在项目的 Flutter 环境中执行命令(如 pub、build)
fvm flutter pub get
fvm flutter build apk
说明:项目级使用时会创建 .fvm/ 目录(含版本配置与符号链接),便于团队协作与 CI 脚本稳定引用。
IDE 与团队协作
使用 Flutter 内置 channel 的要点
flutter channel
flutter channel stable
flutter upgrade
多版本共存与切换工具对比
| 工具 | 版本粒度 | 多版本共存 | 全局/项目级 | 性能与磁盘 | 典型场景 |
|---|---|---|---|---|---|
| Flutter channel | 通道(stable/beta/dev/master) | 否 | 仅全局 | 一般 | 单一项目、跟随官方节奏 |
| FVM | 精确版本(含 tag/commit) | 是 | 全局 + 项目 | 多副本,占用相对更高 | 多项目、团队协作、CI 锁定版本 |
| asdf | 精确版本 | 是 | global/local | 取决于插件实现 | 统一工具链治理 |
| Puro | 精确版本 | 是 | 全局 + 项目 | 更快、更省磁盘(对象去重、引擎共享) | 对性能与磁盘敏感、频繁切换 |
说明:FVM 侧重“项目级锁定与明确性”,Puro 侧重“安装/切换性能与存储优化”,asdf 提供“统一的多语言版本管理体验”。
常见问题与建议