FVM(Flutter Version Management)では、1つのPCで複数バージョンのFlutterSDKを切り替えることができます。
Flutterは[flutter]フォルダに一つのバージョンがインストールされますが、FVMを使うと、もとのFlutterはそのまま保持しながら、最新バージョンでも古いバージョンでも自在に切り替えることができるようになります。
例えば、次のようなニーズがある場合はFVMが効果的です。
- 開発中のプロジェクトで、Flutterのバージョンを固定しておきたい。
- 作成済みのプロジェクトで、Flutterをバージョンアップしても問題ないか確認したい。
- 複数のFlutterプロジェクトを並行して開発するので、プロジェクトごとにFlutterのバージョンを切り替えたい。
- 最新のFlutterを使ってみたい。
- チーム開発する際に、メンバー間のFlutterバージョンを揃えたい。
FVMはかなり普及していて、もとのFlutterSDKを使わずにFVMだけでのバージョン管理も増えていますが、ここではまず基本的なFVMの導入法を解説します。
基本的な導入を理解した上で、自分なりの運用しやすい方法を見つけるのがいいのではないかと思います。

- FVM : 3.2.1
- macOS : Sonoma
- Flutter : 3.27.1 -> FVMで3.29.0にする
- Dart : 3.6.0 -> FVMで3.7.0にする
- Homebrew 4.2.20
- Android Studio : Koala 2024.1.1
FVMのインストール
FVMのサイトでは、まず公式のFlutterをインストールしてからFVMを入れることを推奨しています。
私も、まずはFlutterSDKがグローバルにインストールされたマシンに、FVMをインストールしてバージョン切り替えするやり方がわかりやすいと思います。
なのでここからは、Flutter SDKがすでにインストールされている状態を前提に解説します。
FVMをインストールする方法は、次の2通り。
- githubからダウンロード
- ターミナルからコマンドを入力
どちらのインストールもやり方は簡単です。時間もかかりません。
コマンドラインを使った方法は他のFlutter解説サイトにたくさん出ていますが、Flutter初心者には、マウス操作でgithubからダウンロードする方がわかりやすいので、githubからダウンロードする方法から解説します。
FVMをgithubからダウンロード


github
FVMのgithubから、対応するOSのFVMをダウンロードします。
私の場合は、M1 macなので[fvm-3.2.1-macos-arm64.tar.gz]。
intel macなら[x64]の方です。
ダウンロードされるのは圧縮ファイルなので、ダブルクリックで解凍します。

解凍されたfvmフォルダにはコマンドラインツールが入っているだけなので、10MBもありません。
ダウンロードも解凍も、あっという間に完了です。
この[fvmフォルダ]を、ユーザーフォルダの直下に移動します。
/Users/(ユーザー名)/fvm

このfvmフォルダはどこに置いてもいいのだろうけど、ユーザーフォルダ直下にしておくと、後の管理がわかりやすいです。
その理由は…
今後FVMを使って複数バージョンのFlutterSDKがインストールされて行くわけですが、そのときFVMで管理されるFlutterバージョンは、ユーザーフォルダの直下に自動で作られるfvm
フォルダに入っていきます。
なので、今インストールしたfvmコマンドツールのフォルダをユーザーフォルダ直下にしておくと、FVMは、このfvmフォルダひとつで管理できる、というわけです。
次は、ターミナルからいつでもfvmコマンドが使えるよう「パスを通す」作業です。
パスを通すには、所定のテキストファイルに、いま作られた[fvmフォルダ]の場所を書いておけばOK。
Finderで、ユーザーフォルダの直下にある[.zshrc]ファイル(または[.bash_profile])を開きます。
![macOSのFinderのユーザーフォルダに[.zshrc]ファイルが表示されている画面。[.zshrc]ファイルは隠しファイルなので、ファイル名はグレーで表示されている。](https://fluttoco.com/wp-content/uploads/2025/06/fvm-0500-github-path-zshrc.png)
< パスを書くファイルの注意点 >
- 「.」で始まるファイルが一つもないとき
先頭が「.」で始まるファイルは隠しファイルなので、もし隠された状態なら、Finder上で「コマンド+shift+半角.(ピリオド)」を入力して隠しファイルを表示します。
- [.zshrc][.bash_profile]どっちに書いたらいいかわからないとき
macOSがCatalina以降の場合は[zsh]。
それより前のMojave以前なら[bash]です。
ターミナルを開くと、上部に「-zsh」か「-bash」のどちらかが書かれているはずです。
ですが…
おそらく、もうほとんどの開発環境はCatalina以降でしょうから、[bash]もほぼないんでしょうけど…
Flutterでは、Flutter 3.32の次の安定版リリースから、Mojave以前へのサポートが廃止されるということなので、今後のFlutterバージョンで作られたアプリは、Catalinaより前のMacでは実行できなくなります。
iOS/macOSの最小バージョン
https://flutter.salon/what-is-new/flutter-3-32/#Android%E3%81%AE%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B7%E3%83%93%E3%83%AA%E3%83%86%E3%82%A3%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6@@
Flutterは、次の安定版リリースでiOS 12およびmacOS 10.14(Mojave)へのサポートを廃止し、iOS 13およびmacOS 10.15(Catalina)を最低限の対応対象とします。これにより、今後のFlutterバージョンでビルドされたアプリは、iOS 12またはmacOS 10.14では実行できなくなります。
FlutterSDKがすでにインストールされているなら、[.zshrc]ファイルには次のような記述があるはずなので、これをコピーして使うと簡単です。
私の場合、development
フォルダの下にflutter
が入っています。
すでに書かれているFlutterSDKのパス(たぶん)
export PATH="$PATH:/Users/(ユーザー名)/development/flutter/bin"

[fvm]のパスは、Finder下部のパス表示で[fvm]を右クリックするとキャッシュにコピーできます。
Flutterのパスの行をコピーして、FVMのパスに書き換え
export PATH="$PATH:/Users/(ユーザー名)/fvm"
これで、保存して閉じます。
Finderのパス表示は、Finderのメニューバーから[表示]>[パスバーを表示]/[パスバーを非表示]で切り替えられます。
![Finderのメニューバー[表示]にある項目を表示している画面。この中の[パスバーを表示]をクリックすると、Finder下部にパスが表示される](https://fluttoco.com/wp-content/uploads/2025/06/fvm-0700-github-path-finder-copy.png)
パスを通す作業は、ターミナルからコマンド入力して設定する方法もありますが、上記のように[.zshrc][.bash_profile]を開いて直接パスを入力しても、どちらの方法でもやっていることは同じです。
コマンド入力でやっていることも、[.zshrc]か[.bash_profile]かを確認して、ファイルを開いて、記入して、保存と適用して、最後に確認、ということをしているわけですから。
以上でFVMが使えるはずなので、ターミナルを起動し[fvm]と入力・エンターして確認します。
fvm
![ターミナルから[fvm]と入力して、FVMの使い方(usage)が表示されたターミナル画面。これが表示されればfvmのパスが正常に通っているので、fvmコマンドが使えるようになっていることが確認できる。](https://fluttoco.com/wp-content/uploads/2025/06/fvm-0800-github-path-check.png)
[.zshrc][.bash_profile]に記述したパスは、ターミナルを起動したときに読み込まれます。
なので、もし[.zshrc][.bash_profile]の編集前からターミナルが立ち上がっていたら、ターミナルを一旦閉じて開き直して、再度[fvm]を実行します。
コマンドラインでインストール
ターミナルからコマンド入力でFVMをインストールする方法です。
コマンドラインを使う方法では、Homebrewが必要です。
Homebrewというのは、macOSやLinuxでソフトウェアのインストールやアンインストールをする際に使うツールです。
Homebrewがインストールされているかどうかは、ターミナルから[brew]と入力してみます。
インストールされていれば、Homebrewで使えるコマンド(usage)がずらっと表示されますが、インストールされていないなら[brew not found]などと出てくるので、下記公式サイトからインストールします。
Homebrewのインストールは、公式サイトに出ているコマンドを1行コピーして実行するだけで完了します。
次に、Homebrewを使ってFVMをインストールです。
ターミナルから、次のように入力してエンターします。
まず1つ目のコマンドbrew
のtap
コマンドで、FVMのインストール準備をします。
brew tap leoafarias/fvm
次のコマンドで、実際にFVMのインストールです。
brew install fvm
コマンドラインでFVMをインストールした場合でも、パスを通す作業は必要です。
Homebrewでインストールしたら、パス通しもコマンドラインでやりたいかもしれないけど、ここでは割愛。ごめんなさい。
前の項のgithubからFVMをダウンロードのステップ0では、ターミナルを使わない方法を解説しています。
FVMのパスが通ったら、ターミナルでfvm
のコマンドを入力して確認できたら、設定完了です。
FlutterプロジェクトでのFVM設定
ここからは、Android Studioでの各プロジェクトごとに必要な設定をしていきます。
プロジェクトで使うFlutterのバージョンを設定
Android Studioでプロジェクトを開いて、ターミナルでfvm
コマンドを使います。
使えるバージョンを確認
まずは、いま使えるFlutterのバージョンを表示してみます。
現時点で使えるFlutterのバージョンが一覧表示されます。
fvm releases

FVMのFlutterバージョンを適用
私のプロジェクトは、いま3.27.1
なので、まずはこれを3.29.0
にしていきます。
ターミナルから、以下を実行します。
fvm use 3.29.0
Creating local mirror…
と表示されて、しばらく待つとCloneが作成された様子。

次に表示されるFlutter3.29.0
のインストールの確認メッセージを、y
のままリターンします。
(やめるなら、n
と入力してリターン)
Flutter SDK: SDK Version : 3.29.0 is not installed.
Would you like to install it now? ・ yes

3.29.0のインストールは、数秒で完了。
Flutter SDK: SDK Version : 3.29.0 installed! (3.7s)
次は.gitignore
についての確認です。
You should add the fvm version directory ".fvm/" to .gitignore.
Would you like to do that now? ・ yes
Added .fvm/ to .gitignore
yes
のままリターンすると、プロジェクト直下にある.gitignore
ファイルに以下の行が追加されて、gitの管理対象からfvmが外れます。
![Android StudioのFlutterプロジェクトで、ターミナルからfvmでFlutter3.29.0をインストールした後、.gitignoreの設定確認に[y]と回答して進んでいる画面](https://fluttoco.com/wp-content/uploads/2025/06/fvm-1200-project-use-gitignore.png)

ここまでが終わると、ターミナルにProject now uses Flutter SDK : SDK Version : 3.29.0
と表示されて、プロジェクトにFlutter 3.29.0
が適用されたことがわかります。
Android Studioでの設定
FlutterSDKが3.29.0になったプロジェクトのフォルダを、Finderで開いてみます。
![Flutterプロジェクト内に[.fvm]フォルダが作成されたファインダーの画面](https://fluttoco.com/wp-content/uploads/2025/06/fvm-1300-project-fvmfolder-sdk.png)

プロジェクト直下に[.fvm]フォルダが作成され、その中に[flutter_sdk]と[versions]。
さらに[versions]の中の[3.29.0]のショートカットで、ユーザーフォルダ直下にインストールされた[fvm/versions/3.29.0]フォルダを参照しています。
ここでFlutterが実際にインストールされる場所は、管理ツールのある[fvm]フォルダです。
プロジェクトでは、ショートカットでこの[fvm]フォルダを参照していて、fvm use
でバージョンを切り替えると、このフォルダ内のショートカットが、別バージョンへのショートカットへ入れ替わります。
さらに、[fvm_config.json]ファイルには、このプロジェクトに今適用されているFlutterSDKのバージョンが記載されるので、このファイルも修正されます。
これを踏まえて、Android StudioのFlutter SDKのパスを変更します。
Android Studioのメニューから[settings…]>[Languages & Frameworks]>[Flutter]のタブを開きます。
![Flutterプロジェクトのメニューバーから[settings…]>[Languages & Frameworks]>[Flutter]を選択して設定項目が表示された画面](https://fluttoco.com/wp-content/uploads/2025/06/fvm-1400-project-sdkpath-before-1024x413.png)
画面上部の[Flutter SDK path:]を、いま確認したプロジェクト内の/(プロジェクトのpath)/.fvm/flutter_sdk
に変更します。
すると即座に、入力欄の下の表示もfvmで適用したバージョンに変わります。
![Flutterプロジェクトのメニューバーから[settings…]>[Languages & Frameworks]>[Flutter]を選択し、[Flutter SDK path]をFVMで指定したpathに変更した画面](https://fluttoco.com/wp-content/uploads/2025/06/fvm-1500-project-sdkpath-after-1024x413.png)
プロジェクトフォルダを指す絶対パスなので、プロジェクトを別フォルダに移動したり、フォルダ名を変えたら、ここも修正しないといけません。
flutter doctorしてみる
プロジェクトがFlutterSDK 3.29.0で問題がないかfvm flutter doctor
で確認してみます。
先頭にfvm
をつけてflutter doctor
を実行。
fvm flutter doctor

すると、「XcodeでCocoaPodsが古い」というチェックが入ってしまいました。
試しに、今まで通りのflutter doctor
では、エラーはありません。

FVMのコマンド
以下は、FVMの基本的なコマンドです。
Flutter初心者が初めてFVMを使ってみるなら、このくらいを押さえておけばOKと思います。
各コマンドには、オプションも用意されています。
詳しくはこちら
releases:FVMのFlutterSDKのバージョン表示
fvm releases
use:プロジェクトで使うSDKバージョンの切り替え
fvm use (バージョン番号)
fvmフォルダに指定したバージョンがない場合は、インストールされた後でプロジェクトに適用される。
バージョンを切り替えると、Android Studioでindexingが動くので、実際に別バージョンが適用されるまで少し時間がかかる。
プロジェクトのSDKバージョンは、プロジェクト直下の[.fvm/fvm_config.json]ファイルに書き込まれので、ここで確認も可。
もし、うまく切り替わっていないようなら、fvm flutter doctor
を実行。
それでもダメなら、Android Studioの再起動。
install:FVMのFlutterSDKインストール
fvm install (バージョン番号)
FVMが扱うFlutterSDKのインストール。
このinstall
コマンドでは、もとのFlutter SDKのバージョンアップはされない。
インストールだけなので、プロジェクトへの適用もされない。
FVMでインストールするFlutter SDKは、だいたい1つのバージョンにつき1GBほど。
remove:FVMのSDKを削除
fvm remove(バージョン番号)
fvmフォルダから、指定したバージョンのSDKが削除される。
フォルダからマウスで直接削除しても、FVM上は問題ない。
list:FVMに入っているSDKのリスト表示
fvm list
自分のPCのfvmフォルダにインストールされているSDKの一覧を表示。
コメント