Flutterのバージョンをプロジェクト毎に管理してみた

2022.10.05

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Flutterのバージョンを切り替えて開発をする機会がありましたので、Flutter Version Management(FVM)を導入してみました。開発チームでFlutterのバージョンを合わせたり、プロジェクトでFlutterのバージョン管理をする場合に便利です。

HomebrewでFVMをインストール

HomebrewでFVMをインストールします。

brew tap leoafarias/fvm
brew install fvm

既にFlutter SDKをインストールしている場合、競合を回避するため事前に削除しておく必要があります。

プロジェクトの設定

Flutterのバージョンを指定

使用可能なFlutterのバージョン一覧を取得します。

fvm releases

プロジェクトのルートディレクトリに移動して、プロジェクトで使用するFlutterのバージョンを指定します。対象のバージョンがインストールされていない場合、Flutterをインストールするか聞かれますので、Yes(Y)を入力してインストールを開始します。

fvm use 3.0.5

プロジェクトで既に.fvm/fvm_config.jsonが存在する場合は、事前に定義されたFlutterのバージョンをインストールします。

fvm install

.gitignoreの設定

プロジェクトの.gitignoreにFlutter SDKへの相対シンボリックリンクを追加します。

.gitignore

〜〜〜
.fvm/flutter_sdk

VS Codeの設定

VS Codeの設定でFlutter SDKのパスを指定します。

.vscode/settings.json

{
  "dart.flutterSdkPath": ".fvm/flutter_sdk",
  "search.exclude": {
    "**/.fvm": true
  },
  "files.watcherExclude": {
    "**/.fvm": true
  }
}

VS Codeを開き直すと設定が反映されます。これでVS CodeではFVMで指定したFlutterのバージョンが使われることになります。

Flutterのコマンドを使用

Flutterのコマンドを使用する場合は、先頭にfvmをつけてコマンドを実行します。

# 例
fvm flutter --version
fvm flutter doctor
fvm flutter run

毎回fvmを付けたくない場合は、エイリアスを設定します。

# zshの場合
echo 'alias flutter="fvm flutter"' >> ~/.zshrc
source ~/.zshrc

プロジェクト以外でFlutterのコマンドを使用

プロジェクト以外でFlutterのコマンドを使用するにはグローバルバージョンを設定します。

fvm global 3.3.3

パスを通します。

# zshの場合
echo 'export PATH="$PATH:$HOME/fvm/default/bin"' >> ~/.zshrc
source ~/.zshrc

プロジェクト以外でもFlutterコマンドが使えるようになります。先頭にfvmを付ける必要はありません。

flutter --version

Flutterのバージョンを削除

Flutterのバージョンは次のコマンドで削除できます。

fvm remove 3.0.5

まとめ

FVMは他言語のバージョン管理ツールと使い方も似ているため直感的に利用することができました。設定をしておけばプロジェクトを開いた際に自動でFlutterのバージョンが切り替わるので、複数のプロジェクトに参加している場合はとくに役立つツールだと思います。

参考資料