バージョン管理ツール「asdf」を使ってFlutter開発環境をmacに作る

fvmを使ってもよいんですが、開発言語ごとにバージョン管理ツールが増えるのは面倒なので、個人的に好きな各言語の管理プラグインが提供されている asdf を使いたいと思います。

asdfのセットアップ

公式のGetting Startedに従って作業します。(今回はbrewを使ってasdfを入れます。)

asdfについて

asdf-vm.com

brewについて

brew.sh

1. Dependenciesのインストール

asdfを使うために必要な依存パッケージを先にインストールしておきます。

$ brew install coreutils curl git

2. asdfのインストール

brewからasdfをインストールします。

$ brew install asdf

asdfのPATHを登録します。

Bash + Homebrew

`~/.bash_profile` に下記のコードを追加します。

```bash
. $(brew --prefix asdf)/libexec/asdf.sh
```

`.bash_profile` の再読み込みをする
```bash
$ source ~/.bash_profile
```

Zsh + Homebrew

`~/.zshrc`に下記のコードを追加します。

```zsh
. $(brew --prefix asdf)/libexec/asdf.sh
```

`.zshrc` の再読み込みをする
```zsh
$ source ~/.zshrc
```

PATH登録が終わって、再読み込みが完了したら asdf が認識しているかチェックします。

$ asdf --version
v0.10.2(←ここのバージョンは同じじゃなくてもよい)

3. Flutterプラグインをインストール

asdfFlutterのバージョンを管理できるようにするために、プラグインをインストールします。

※プラグインの検索は以下が便利です。

asdf plugin list all | grep <plugin_name>
# プラグインの検索
$ asdf plugin list all | grep flutter
flutter *https://github.com/oae/asdf-flutter.git

# Flutterプラグインのインストール
$ asdf plugin add flutter https://github.com/oae/asdf-flutter.git

# インストール済みプラグインリスト
$ asdf plugin list
flutter
...

Flutterのインストール

asdfのセットアップが終わったら、asdfFlutterをインストールします。

asdfでインストールできる全リストは以下で表示可能

$ asdf list all <plugin_name>
# Flutterバージョンが3系をピックアップ
$ asdf list all flutter | grep ^3.

# Flutter 3.3.4-stable をインストール
$ asdf flutter install 3.3.4-stable

# インストールできているか確認
$ asdf list flutter
  3.3.4-stable

Cannot find the download url for the version: 3.3.10-stable と言われたときは、こちらを参照してみてください。

coneta.jp

※flutterのバージョン設定をどこまでのスコープで適用するか決められます。

■Global(全てで指定したバージョンを利用する)

$ asdf global flutter 3.3.4-stable

■shell(現在のShellで利用する)

$ asdf shell flutter 3.3.4-stable

■local(カレントディレクトリ配下で指定したバージョンを利用する)

$ asdf local flutter 3.3.4-stable

設定が完了したらasdfで正常に設定されているか確認します。

$ asdf current
flutter  3.3.4-stable  /Users/h.nomura/.tool-versions(←ディレクトリは設定したスコープによって違う)

各種設定のチェック

$ which asdf
asdf () {
    local command
    command="$1"
    if [ "$#" -gt 0 ]
    then
        shift
    fi
    case "$command" in
        ("shell") eval "$(asdf export-shell-version sh "$@")" ;;
        (*) command asdf "$command" "$@" ;;
    esac
}

$ which flutter
/Users/h.nomura/.asdf/shims/flutter

$ asdf --version
v0.10.2

$ flutter --version
Flutter 3.3.4 • channel stable • https://github.com/flutter/flutter.git
Framework • revision eb6d86ee27 (3 months ago) • 2022-10-04 22:31:45 -0700
Engine • revision c08d7d5efc
Tools • Dart 2.18.2 • DevTools 2.15.0