66
41

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Flutterのバージョン管理ツールfvmを試してみる

Last updated at Posted at 2020-07-24

概要

複数人でFlutterのプロジェクトの開発を行う場合、rbenvやnodenvの様に
誰でも同じバージョン(同じ環境)で開発できるようにしたいと思い、
Flutter sdkのバージョン管理ができそうなツールは無いか調べて見ました。

Flutter sdkのversion管理ができそうなツール調査

ざっと調べた所以下の2つを発見 :eyes:


どちらも同じ fvm という名前みたいです。
今回は pub で公開されている leoafarias/fvm を使ってみたいと思います。
できる機能としては以下になります。

  • プロジェクトごとに Flutter SDK のバージョンを設定して使用する
  • 複数の Flutter SDK バージョンのインストールとキャッシュ機能
  • Flutter channels & versionsの高速切り替え
  • IDEデバッグをサポートするためのダイナミックSDKパス
  • チームとCI環境全体で一貫性を保つために、プロジェクトでFVM構成をバージョン管理
  • プロジェクト間でのグローバルな Flutter バージョンの設定

環境構築

早速pubを使って fvm をインストールします。

$ pub global activate fvm
# 又は
$ flutter pub global activate fvm

次にパスを通します。
※dartのパスも必要で flutter-sdkのみインストールしている場合は、別途dartをインストールするか、flutter-sdk内にあるdartのパスを設定します。
(個人的に複数のdart環境をインストールしたくないので、今回はflutter-sdk内にあるdartを再利用しています)

# fvmのパス
$ export PATH="$PATH":"$HOME/$FLUTTER_SDK_PATH/.pub-cache/bin"
# dartのパス
$ export PATH="$PATH":"$HOME/$FLUTTER_SDK_PATH/cache/dart-sdk/bin"

fvm help でヘルプが表示されればOKです。

2021/08/11追記

こちらHomebrewChocolatery でもインストールできるようになったと記述されているので
そちらを使った方が良いかもしれません。

使い方

  • インストール可能なリリース済みのバージョン一覧を確認する場合

    $ fvm releases
    # stable / dev / beta それぞれが一覧表示される
    
  • 現在インストールされているバージョンの一覧を表示

    $ fvm list
    
  • 特定のSDKバージョンをインストールする

    $ fvm install <version>
    
  • プロジェクト内でのSDKバージョンを固定する

    $ fvm use <version>
    

    プロジェクト内に ./fvm が作成されます。
    .fvm内は .fvm/fvm_config.json と、.fvm/flutter_sdk が作成され、
    .fvm/flutter_sdk の方は /Users/xxxx/fvm/versions/<version> のシンボリックリンクとなっています。

  • プロジェクト内で固定されたSDKバージョンを使用する
    プロジェクト内に .fvm/fvm_config.json がある状態で以下を実施

    $ fvm install
    
  • VSCodeで使う場合

    {
      "dart.flutterSdkPath": ".fvm/flutter_sdk"
    }
    

    ↑をプロジェクト直下の .vscode/settings.json に追加し、再起動します。
    【追記】
    settings.jsonには dart.flutterSdkPathdart.flutterSdkPathsが設定でき、
    前者は1つのSDKのみ指定でき、後者は複数SDKを指定でき、VSCode上で切替可能です。

    gitignore には

    .fvm/flutter_sdk
    .vscode/settings.json
    

    を追加しました。

  • AndroidStudioで使う場合
    VSCodeでしか試してないのですが、こちらにセットアップ方法が載っていました :sparkles:

新規プロジェクトをfvm使用して特定のバージョンで作成する

通常は既存のflutter projectでしか use コマンドは使用できないが、
--force フラグを使用することでflutter project以外のディレクトリでも使用可能になります。
新規のプロジェクトをfvmを使用して作成する場合、一旦ディレクトリを先に作成して --force フラグ付きでバージョンを固定し、プロジェクトを作成します。

$ mkdir sample_project
$ cd sample_project
$ fvm use <version> --force
$ fvm flutter create .

感想

クロスプラットフォームでの開発の場合、バージョン更新したらエラーの嵐で大変だった。。という経験があったので
プロジェクト内でバージョン固定できてメンバー間に共有できる所はとてもありがたいなと思いました。
もしかしたら他に良いツールや方法等があるかもしれないですが、現時点ではfvmを使っていきたいと思います。

66
41
4

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
66
41

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?