asdfでFlutter SDKのバージョンをアプリ毎に管理する
複数のFlutterプロジェクトに携わるならFlutter SDKのバージョン管理は必須とも言えますよね。
こちらのアプリは v2.0.0 を使ってるけど、あちらのアプリは v1.17.0 のままだし、さらにあちらは devチャンネルの v2.4.0.pre を使ってる!
といったときに、都度グローバルにインストールしたFlutterのバージョンを上げたり下げたりするのは面倒です。。
FVM(Flutter Version Management)を長らく使っていましたが、朝日さんの記事を見てから気になっていた asdf を導入してみました!
asdf の導入(インストール)
Macの場合は、 Homebrew で簡単にインストールできます。
brew install asdf
パスを通します。
Homebrewでインストールし、 ZSH
を使用している場合は以下のコマンドを実行すればパスが通ります。
# パスを通す
echo -e "\n. $(brew --prefix asdf)/asdf.sh" >> ${ZDOTDIR:-~}/.zshrc
# そのまま同じ Terminal を使うなら、 `.zshrc` を更新して通したパスを反映させる
source ~/.zshrc
インストール可能なFlutterバージョンの一覧を見る
asdfにてインストール可能なFlutterのバージョンが一覧するには、asdf の list all
コマンドを実行します。
asdf list all flutter
使用したいFlutterバージョンをインストールする
asdf の install
コマンドを実行します。
# Flutter 2.2.3 (stable) をインストールする場合
asdf install flutter 2.2.3-stable
asdfにてインストール済みのFlutterバージョンを確認するには asdf の list
コマンドを使用します。
asdf list flutter
プロジェクトごとにasdfでFlutterバージョンを指定する(変更も同じ)
Flutterバージョンのアップグレードも同じコマンドを使います👌
asdf の local
コマンドを実行します。
# プロジェクトのディレクトリに移動していない場合は移動します。
cd アプリプロジェクトのディレクトリ
# アプリプロジェクトで使用したいバージョンを指定します。
asdf local flutter 2.2.3-stable
このコマンドを実行すると、 .tool-version
が作成されます。
.tool-version
がすでに存在する場合は、指定したFlutterバージョンに書き換えられます👍
以下、作成される tool-version
例です。
Flutter のバージョンが指定されていますね👌
flutter 2.2.3-stable
指定したFlutterバージョンが使えているか、動作確認する
flutter --version
asdfで指定したFlutterバージョンになっていればOKです。
.tool-versions
がある場合にすること
新しく参加したプロジェクトに A. 指定のFlutterバージョンをasdfでインストール済み
何もする必要はありません。そのまま flutter
コマンドが使用できます。
B. 指定のFlutterバージョンをasdfでまだインストールしていない
以下のコマンドでインストールしましょう。
asdf install
.tool-versions
ファイルで指定されているSDK(Flutter)がインストールされます。
VSCodeで必要な設定
VSCode の User Settings で設定する
- Macだと
⌘ + ,
か、メニューからCode -> Preferences -> Settings
で設定画面を開きます。 -
Search settings
にflutter sdk
と入力します。 -
Dart: Flutter Sdk Paths
に asdf でインストールしたFlutter SDKsのパスを入力します。
多くの場合は/Users/{username}/.asdf/installs/flutter/
で良いかと思います。
以下は筆者の設定例です。ユーザー名は riscait
の部分を変えてくださいね。
パスとしてディレクトリを指定しました!
これで、今後複数のFlutterバージョンをインストールしても、設定をいじる必要はありません。
複数のFlutterバージョンから、使用したいバージョンを選択する
User Settingsを設定しただけでは、複数のFlutterバージョンをインストールしていた場合はどのバージョンを使って良いのかVSCodeが判断できません。
以下の手順で選択しましょう。
VSCode右下に現在のFlutterバージョンが表示されています。
※表示されていない場合は、 main.dart
など、 Dartファイルを開くと表示されます。
ここのバージョンが希望のバージョンになっていない場合は、Flutter 2.0.6 の場所をクリックしましょう。
以下のように選択画面が表示されます。
※FVMを使っていた方、使っているプロジェクトがある方の注意点
FVMを導入したときに、 VSCodeの settings.json
で dart.flutterSdkPath
を指定している場合は asdf の使用に問題がありそうです。
Macであれば ⌘+,
で settings.json
を開き、 dart.flutterSdkPath
を削除しましょう。
.fvm/flutter_sdk
が使用されている場合
プロジェクトの settings.json で .vscode/settings.json
で 以下の指定がある場合、今のところ問題なく flutter
コマンドは使えていますが、問題があれば追記します。
"dart.flutterSdkPath": ".fvm/flutter_sdk"
参考文献
Discussion
のくだりで
sourch
というコマンドが出てきますが、これsource
の間違いだったりしませんかにわとりさん、ご指摘ありがとうございます🙏
タイポですね!後ほど修正いたします👍
素晴らしい記事をありがとうございます!
asdf plugin add flutter
が必要そうです!非常に参考になりました!ありがとうございます!!