Flutterで複数のバージョンを切り替えて作業する際のXcodeとAndroid Studioを切り替える方法
FlutterでiOSやAndroidアプリの開発を行っており、Flutterのバージョンを切り替えた際に、XcodeとAndroid Studioの参照を切り替える方法についての紹介となります。
この記事では、Mac環境で検証した内容を記述しています。
前提:なぜバージョンを切り替えるのか?
Flutterは開発サイクルが早く、バージョンアップも頻繁に行われます。
開発時に最新バージョンを利用する場合、既存の開発環境のバージョンを切り替えて開発する必要があります。
例えば、2024年7月と2025年2月に開発を開始した場合の最新、それぞれの最新バージョンは下記の表のように異なります。
Flutterのバージョンはプロジェクトごとに切り替えることが可能です。
しかし、XcodeやAndroid Studioのバージョンはグローバルで変更されるため、異なるFlutterバージョンのプロジェクトに切り替えるとビルドエラーが発生してしまいます。(超面倒)
開発日 | Flutter | Xcode | Android Studio |
---|---|---|---|
2024年7月 | 3.22.2 | 15.3 | 2023.1.1 |
2025年2月 | 3.27.3 | 16.2 | 2024.2.2 |
Flutterのバージョンを切り替える
バージョン管理ツールについて2つご紹介します。
asdf (Mac)
asdf は、MacやLinuxでは利用できるFlutterのバージョン管理ツールです。
Windowsでは利用できないので、Windowsで利用がする場合FVM
がおすすめです。
導入は、Homebrewがおすすめです。
Homebrewを利用した導入方法を紹介します。
# Homebrew導入
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# asdf のインストール
brew install asdf
# asdf で Flutter を利用できるようにプラグインを追加
asdf plugin add flutter
上記で、asdfでFlutterの管理が利用できるようになりました。
以降は、Flutterのインストールやディレクト毎に閉じたFlutterバージョンの設定方法を紹介します。(詳細は公式見た方が良いかも)
Flutterを追加
まずはインストールできるバージョンを確認する。
asdf list all flutter
今回はflutter3.27.4をインストールする。
asdf install flutter 3.27.4-stable
プロジェクト毎にFlutterのバージョンを指定する
cd <プロジェクトディレクトリ>
asdf local flutter 3.27.4-stable
FVM (Mac/Windows)
FVM は、MacやWindowsで利用できるFlutterのバージョン管理ツールです。
今回はMacでの導入方法をご紹介します。Windowsの方が公式サイトをご確認ください。
導入は、Homebrewがおすすめです。
Homebrewを利用した導入方法を紹介します。
# Homebrew導入
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# FVM のインストール
brew tap leoafarias/fvm
brew install fvm
上記で、FVMでFlutterの管理が利用できるようになりました。
以降は、Flutterのインストールやディレクト毎に閉じたFlutterバージョンの設定方法を紹介します。(詳細は公式見た方が良いかも)
Flutterを追加
まずはインストールできるバージョンを確認する。
fvm releases
今回はflutter3.27.4をインストールする。
fvm install 3.27.4 --setup
プロジェクト毎にFlutterのバージョンを指定する
cd <プロジェクトディレクトリ>
fvm use 3.27.4
Xcodeのバージョンを切り替える
現在設定されているXcodeのバージョンを確認します。
xcode-select -p
筆者の環境では、Xcodeのアプリ名にバージョン付けしているので下記のように出力されます。
Xcode15.2がグローバルに設定されています。
/Applications/Xcode152.app/Contents/Developer
Xcodeのバージョンを16.2に変更する場合下記のコマンドを入力します。
パスワードが聞かれるので入力します。
sudo xcode-select -s /Applications/Xcode162.app/Contents/Developer
これで、Xcodeのグローバルバージョンの変更が完了しました。
Android Studioのバージョンを切り替える
Androidのバージョンを切り替える場合は、flutterの機能を利用して切り替える必要があります。
ここでは、Flutterのバージョン管理ツールはFVM
を利用しています。
下記の指定を何も指定していない状態だと、Androidのビルド時に/Applications/Android Studio.app
が参照されるようです。
特定のバージョンのAndroid Studio
を指定したい場合は、以下のように設定します。
fvm flutter config --android-studio-dir=/Applications/Android\ Studio_2023.1.app
この設定の問題点
flutter config
はグローバルな設定のため、asdf
やFVM
を使用してプロジェクトごとにFlutterのバージョンを切り替えても、同じflutter config
が参照されてしまいます。
これは、flutter config
の設定ファイルがプロジェクトごとのディレクトリではなく、ホームディレクトリに作成されるためです。そのため、Flutterのバージョンを切り替えても同じ設定が適用されてしまいます。
{
"android-studio-dir": "/Applications/Android Studio_2023.1.app"
}
さいごに
プロジェクトごとにFlutterのバージョンを固定できるなら、それに合わせて参照するXcodeやAndroid Studioのバージョンも固定できる方法を提供してほしい。。。
良き方法をご存知の方は教えてください🙇♂️
Discussion