💭

Flutterで複数のバージョンを切り替えて作業する際のXcodeとAndroid Studioを切り替える方法

2025/02/11に公開

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はグローバルな設定のため、asdfFVMを使用してプロジェクトごとにFlutterのバージョンを切り替えても、同じflutter configが参照されてしまいます。
これは、flutter configの設定ファイルがプロジェクトごとのディレクトリではなく、ホームディレクトリに作成されるためです。そのため、Flutterのバージョンを切り替えても同じ設定が適用されてしまいます。

.config/flutter/settings
{
  "android-studio-dir": "/Applications/Android Studio_2023.1.app"
}

さいごに

プロジェクトごとにFlutterのバージョンを固定できるなら、それに合わせて参照するXcodeやAndroid Studioのバージョンも固定できる方法を提供してほしい。。。

良き方法をご存知の方は教えてください🙇‍♂️

Discussion