FVM(Flutter Version Management)とは
FVM(Flutter Version Management)はFlutter SDKのバージョン管理ツール。
複数のSDKバージョンを高速で切り替えることができ、複数プロジェクトを抱えている開発者にとってはかなり便利。
FVMを使い始める前に
2023年8月現在、この記事のように「既にFlutter SDKをインストールしている場合、競合を回避するため事前に削除しておく必要があります。」という旨の記述がある記事がある。
しかしFVM公式サイトの記述の通り、既存のFlutter SDKは削除する必要はない。
グローバルのSDKバージョンを指定するglobal
コマンドが非サポートになったので、公式声明の通り手動でインストールしたSDKは残しておき、各プロジェクトのSDKバージョンをFVMで行う方が良いだろう。
FVMでSDKバージョンを切り替える手順
FVMでSDKバージョンを切り替えるまでの流れは以下のようになる。
Flutterプロジェクトを作成する(新規にFlutterプロジェクトを作成する場合)
通常通りflutter create [プロジェクト名]
でプロジェクトを作成する。
FVMをインストール
インストール手段はプラットフォーム毎に用意されている。
すらぼうはMacOSを使用しているのでHomebrewでインストールする。
brew tap leoafarias/fvm brew install fvm
brew tap
というコマンドがあまり見慣れなかったが、Homebrew公式のリポジトリ以外からインストールするための準備を行うコマンド。
その後brew install fvm
を実行してFVMをインストールする。
バージョンが表示されればインストールはOK。
fvm --version # 2.4.1
Windows、Linuxでのインストールは以下のガイドに従う。
なおDartのパッケージとしてインストールする方法も紹介されているが、特定のプロジェクト限定でFVM使用する場合以外は上記の方法でインストールすることが勧められている。
各種設定を行う
FVMを使う前に以下の設定を行う必要がある。
環境変数 FVM_HOME
FVM_HOMEでSDKのキャッシュを持つディレクトリを指定する。 例えばzshを使用している場合、~/.zshrcなどに以下の記述を追加する。
export FVM_HOME="[FVMのキャッシュを保存するパス]"
コマンドで指定することもできる。
fvm config --cache-path [FVMのキャッシュを保存するパス]
.gitignore
プロジェクト毎の.gitignore
に以下の記述を加える。
.fvm/flutter_sdk
上記はシンボリックリンクファイルといい、FVMが管理するバージョンのsdkの場所を指定しているショートカット用のファイル。 これはバージョン管理する必要がないので管理対象から外す。
ただし毎回プロジェクト毎に.gitignore
を書くのは面倒。
そこで公式が紹介しているように.gitignore_global
を用意して一括で設定するのが楽。
echo ".fvm/flutter_sdk" >> ~/.gitignore_global git config --global core.excludesfile ~/.gitignore_global
VSCode
VSCode(Visual Studio Code)からSDKのパスが認識できるように、以下の記述を.vscode/setting.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
追記予定
FVMでSDKをインストール
以下のコマンドにて使用したいバージョンをインストールする。
fvm install [version]
例えば3.10.0をインストールする場合次のようになる。
fvm install 3.10.0
SDKをインストールするので少し時間がかかる。 インストールが完了したら以下のコマンドで確認を行う。
fvm list # 3.13.1 # 3.10.0
上記の結果の場合は「3.13.1」と3「3.10.0」がインストールされている状態になる。
SDKバージョンを切り替える
fvm use
コマンドでバージョンを切り替えることができる。
fvm use [バージョン]
例えば3.13.1に切り替えると次のようになる。
fvm use 3.13.1 # Project now uses Flutter [3.13.1]
現在のバージョンは次のコマンドで確認できる。
fvm flutter --version
FVMで管理しているSDKバージョンはflutter --version
では確認できない点に注意。
以上でFVMによりSDKを切り替えることができた。
(補足)FVMコマンドのまとめ
補足としてこれまで登場したものも含め、主なFVMのコマンドをまとめる。
SDKインストール
fvm install [version]
(例)3.10.0をインストール
fvm install 3.10.0
SDKアンインストール
fvm remove [version]
(例)3.10.0をアンインストール
fvm remove 3.10.0
インストール済みSDK一覧を表示
fvm list
インストール可能なSDK一覧を表示
fvm releases
SDKの切り替え
fvm use [version]
(例)3.10.0に切り替え
fvm use 3.10.0
FVMの設定を表示
fvm config
プロジェクトのFVM設定を表示
fvm doctor
Flutterのコマンドを使用
fvm flutter [コマンド]
(例)flutter create
を実行
fvm flutter create test_proj