プロジェクトに対して Flutter のバージョンを固定するために Flutte Version Management (FVM) を利用することがあります。チームで開発する際に発生しがちな開発環境の差異を減らすことができるようになります。
FVM について
プロジェクトのディレクトリで fvm use stable
を実行すると、 .fvm
に SDK のシンボリックリンクと fvm_config.json
が作成されます。 fvm_config.json
を Git リポジトリに commit することで、他の人たちは fvm install
で同じ SDK を利用することができます。詳しくは 公式ドキュメント をご確認ください。
.fvm
├── flutter_sdk -> $HOME/fvm/versions/stable
└── fvm_config.json
その後、この SDK を利用するには通常のコマンドの代わりに fvm flutter
や fvm dart
を利用します。あるいは VS Code の .vscode/settings.json
や InteliJ/Android Studio の idea/workspace.xml
で設定します。
FVM の不便なところ
通常のコマンドの代わりに fvm flutter
や fvm dart
を利用しなければならないというのが少し不便でして、 fvm
を付け忘れて普通に flutter
コマンドを利用してしまうと、管理されていないシステムにインストールされたバージョンが利用されてしまいます。
他の例えば Python の venv などであれば、 PATH
環境変数を入れ替えて今開いているシェルの python
コマンドを差し替えたりします。こうすれば間違えてしまうことはありません。
fvm-activate を作ってみる
Python の venv の activate スクリプトを参考に FVM 版を作成してみました。
これをプロジェクトの scripts/fvm-activate
に配置します。そして source scripts/fvm-activate
を実行すると、FVM で管理された SDK が優先的に利用されるようになります。
fvm-deactivate
で元に戻すことができます。