LoginSignup
10

More than 3 years have passed since last update.

開発者ごとでなく、プロジェクトごとにFlutterのバージョンを管理する

Posted at

Flutterのアップデート、まだまだ激しいですよね。
以前チーム開発していた時も、

  • 他の開発者とのFlutterのバージョン違いによりAPI定義が異なりエラーの嵐→無駄なコミュニケーションの発生
  • 自分のPCのFlutterのバージョンを上げてしまったところ、ビルドできなくなったといった報告の対応

など、プロジェクトごとでなく開発者ごとにFlutterのバージョンを管理しているために起きてしまう問題がいくつかありました。また、OSSや個人開発などでも使用するFlutter SDKのバージョンを固定したいこともあるかと思われます。

本記事では、開発者ごとでなく、プロジェクトごとにFlutterのバージョンを管理する方法を紹介します。

FVMを用いる場合

FVMはFlutter SDKバージョン管理ツールです。

導入についてはこちらの記事が日本語で分かりやすいので、説明は割愛します。

バージョンをプロジェクトごとに固定する方法

ターミナルを開いてプロジェクトのルートに移動しておいてください。

インストール可能なリリース済みのバージョン一覧を確認しましょう。

$ fvm releases

次に現在インストールされているバージョンの一覧を確認してみましょう。

$ fvm list

お目当てのバージョンがなければ、以下のコマンドでバージョン名またはチャンネル名からFlutter SDKが手に入ります。

$ fvm install <バージョン名またはチャンネル名>

例えばstableを使いたい人は以下のコマンドです。

$ fvm install stable

最後に、以下のコマンドで、プロジェクトのFlutter SDKのバージョンを固定することができます。

$ fvm use <バージョン名またはチャンネル名>

そうすると、プロジェクト内に.fvmが作成されます。.fvm内には以下が入っています。

  • プロジェクトで固定されるFlutter SDKバージョン情報が記載された.fvm/fvm_config.json
  • ~/fvm/versions/<バージョン名>のシンボリックリンクとなっている.fvm/flutter_sdk

すでにFVMによりバージョン固定されているプロジェクトで開発する時

バージョンを指定せず以下のコマンドを実行すると、.fvm/fvm_config.jsonのバージョンをインストールできます。

$ fvm install

固定されたバージョンのFlutter SDKを使用する

flutterコマンドの前にfvmをつけるだけです。例としてflutter runしたい場合は以下のようになります。

$ fvm flutter run

IDEの設定

IDEの操作でも固定したFlutter SDK下で実行できるようにします。デバッガーなどIDEの機能を使いたい時のために必要です。

Android Studioの場合

Preferences > Languages & Frameworks > FlutterのFlutter SDK pathを{対象プロジェクトのルート}/.fvm/flutter_sdkに変更してください。

VSCodeの場合

{対象プロジェクトのルート}/.vscode/settings.jsonに以下を追加してください。

{
    "dart.flutterSdkPath": [".fvm/flutter_sdk"],
}

VSCodeを再起動し、コマンドパレットでFlutter: Change SDKと入力してバージョンを選んでください。

Flutter Wrapperを用いる場合

更新が一年以上止まっているのですが、特定のバージョンのFlutter SDKをダウンロード&実行するシェルスクリプトによってFlutterのバージョンをプロジェクトで固定できるFlutter Wrapperを用いる方法もあります。

導入

ターミナルでバージョンを固定したいプロジェクトのルートに移動した後、以下を実行するだけです。

$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/passsy/flutter_wrapper/master/install.sh)"

以降はflutterの代わりに./flutterwのコマンドを用いることで、固定されたFlutter SDK下でコマンドを実行することができます。

アップグレード

特に新しいコマンドを覚える必要はありません。これもflutterの代わりに./flutterwになるだけで、いつものFlutterのアップグレードと同じです。

IDEの設定

各IDEで設定されているFlutter SDKのパスを変更しておくことで、FVMの時と同様、IDEの操作でも固定したFlutter SDK下で実行できるようにします。

Android Studioの場合

Preferences > Languages & Frameworks > FlutterのFlutter SDK pathを{対象プロジェクトのルート}/.flutterに変更してください。

VSCodeの場合

{対象プロジェクトのルート}/.vscode/settings.jsonに以下を追加してください。

{
    "dart.flutterSdkPath": ".flutter",
}

まとめ

Flutter Wrapperは更新があまりされていないので、現在のところFVMがスタンダードなのかなという感じです。FVMの方がバージョン切り替えもスムーズかと思います。強いて言うなら、Flutter WrapperはFVMのインストールを必要としないので、コマンド一発で使えるというところがメリットでしょうか。

参考

https://qiita.com/tetsufe/items/8ffa296c22a2dc8b9b51
https://qiita.com/Slowhand0309/items/0767abee120fcb3ba0b4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10