Open14
fvmを利用してリポジトリ毎に異なるFlutterのバージョンを利用する
現状
flutterリポジトリをそのままcloneしてブランチ変更で運用
課題
並列でバージョンが異なるアプリを開発するときに切り替えがめんどくさい
理想
rbenvみたいに設定できれば嬉しい
macOS 10.15.7
こちらの記事が参考になりそう
$ 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".
なぜだ・・・
-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
ここは元記事からまるコピ
# インストール可能なFlutterバージョン一覧を確認
$ fvm releases
# インストール済みなFlutterバージョン一覧を確認
$ fvm list
# 指定したFlutterバージョンをインストール
$ fvm install <バージョン>
# プロジェクトで使用するFlutterバージョンを指定する
$ fvm use <バージョン>
# globalにしたい場合
# ※コメントを受けて更新しました
$ fvm global <バージョン>
アップデートで
$ fvm use <バージョン> --global
↓
$ fvm global
になってました
- 必要なバージョンをinstall
- メインで使うバージョンをglobal指定でuse
- それ以外のリポジトリ内では普通のuseで設定
最後にAndroid StudioのPreferences | Languages & Frameworks | Flutter
でsdkのパスを指定する
/Users/ユーザ名/fvm/default
にした
もともとのSDKのリポジトリを削除してビルド実行→成功
DONE
利用したパッケージ
fvmのアップデート
Flutterバージョンを変更しようとしてfvm releases
コマンドを実行しても最新のバージョンが表示されなかった。
これはコマンドのアップデートが必要だから
pub global list | awk '{print $1}' | xargs -n1 pub global activate
このコマンドを実行してアプデしたら解消できた
fvm releases
自体はグローバルなリモートリポジトリを参照しているだけだと思っていたけど、ローカルのcacheとして保持しているコードに依存している模様