すらぼうの開発ノート

モバイルアプリエンジニアのメモ

【Flutter】FVM(Flutter Version Management)の使い方

FVM(Flutter Version Management)とは

fvm.app

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プロジェクトを作成する場合)
  • FVMをインストール
  • 各種設定を行う
  • FVMでSDKをインストール
  • SDKバージョンを切り替える

Flutterプロジェクトを作成する(新規にFlutterプロジェクトを作成する場合)

通常通りflutter create [プロジェクト名] でプロジェクトを作成する。

FVMをインストール

インストール手段はプラットフォーム毎に用意されている。

すらぼうはMacOSを使用しているのでHomebrewでインストールする。

brew tap leoafarias/fvm
brew install fvm

brew tapというコマンドがあまり見慣れなかったが、Homebrew公式のリポジトリ以外からインストールするための準備を行うコマンド。

docs.brew.sh

その後brew install fvmを実行してFVMをインストールする。

バージョンが表示されればインストールはOK。

fvm --version
# 2.4.1

WindowsLinuxでのインストールは以下のガイドに従う。

fvm.app

なお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

VSCodeVisual 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