Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
35
Help us understand the problem. What are the problem?
@Slowhand0309

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

概要

複数人で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を使っていきたいと思います。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
35
Help us understand the problem. What are the problem?