Open14

fvmを利用してリポジトリ毎に異なるFlutterのバージョンを利用する

kudokudo

現状

flutterリポジトリをそのままcloneしてブランチ変更で運用

課題

並列でバージョンが異なるアプリを開発するときに切り替えがめんどくさい

理想

rbenvみたいに設定できれば嬉しい

kudokudo
$ brew tap dart-lang/dart
$ brew install dart
$ pub global activate fvm

以下のようなメッセージがでたので、.zshrcに同様の内容をファイルに書き込む


Warning: Pub installs executables into $HOME/.pub-cache/bin, which is not on your path.
You can fix that by adding this to your shell's config file (.bashrc, .bash_profile, etc.):

  export PATH="$PATH":"$HOME/.pub-cache/bin"

Activated fvm 1.3.8.

書き込み内容を反映する

$ source ~/.zshrc
$ fvm version
Could not find a command named "version".

なぜだ・・・

kudokudo

-hで確認した
指定方法が間違っていた

$ fvm -h
Flutter Version Management: A cli to manage Flutter SDK versions.

Usage: fvm <command> [arguments]

Global options:
-h, --help       Print this usage information.
    --verbose    Print verbose output.
    --version    Print the current version

Available commands:
  config     Set configuration for FVM
  dart       Proxies Dart Commands
  flutter    Proxies Flutter Commands
  install    Installs Flutter SDK Version
  list       Lists installed Flutter SDK Version
  releases   Lists Flutter SDK releases.
  remove     Removes Flutter SDK Version
  use        Which Flutter SDK Version you would like to use

Run "fvm help <command>" for more information about a command.
$ fvm --version
1.3.8
kudokudo

ここは元記事からまるコピ

# インストール可能なFlutterバージョン一覧を確認
$ fvm releases

# インストール済みなFlutterバージョン一覧を確認
$ fvm list

# 指定したFlutterバージョンをインストール
$ fvm install <バージョン>

# プロジェクトで使用するFlutterバージョンを指定する
$ fvm use <バージョン>

# globalにしたい場合
# ※コメントを受けて更新しました
$ fvm global <バージョン>


kudokudo
  1. 必要なバージョンをinstall
  2. メインで使うバージョンをglobal指定でuse
  3. それ以外のリポジトリ内では普通のuseで設定
kudokudo

最後にAndroid StudioのPreferences | Languages & Frameworks | Flutter でsdkのパスを指定する

/Users/ユーザ名/fvm/default にした

kudokudo

もともとのSDKのリポジトリを削除してビルド実行→成功

kudokudo

fvmのアップデート

Flutterバージョンを変更しようとしてfvm releasesコマンドを実行しても最新のバージョンが表示されなかった。
これはコマンドのアップデートが必要だから
https://qiita.com/takutaro/items/79d5cfe51138e45060c8

pub global list | awk '{print $1}' | xargs -n1 pub global activate

このコマンドを実行してアプデしたら解消できた

kudokudo

fvm releases自体はグローバルなリモートリポジトリを参照しているだけだと思っていたけど、ローカルのcacheとして保持しているコードに依存している模様