FlutterをVS Codeで開発している場合、Android Studioの切り替え忘れに悩んだことはないでしょうか?
Google Playにアプリを配信していると年に1回はAndroid API Levelを上げる必要が出てきます。
集中してこの作業に取り組めれば良いのですが、私の場合、運用に必要な機能開発と並行して作業を行うことが多かったため、開発ブランチごとに参照するAndroid Studioを切り替える必要がありました。
Flutterは参照するAndroid Studioのパスをグローバル設定で保持しているため、ブランチごとに紐づけることができません
このような開発スタイルを続けていた結果、ブランチを切り替えたのにAndroid Studioのパスを切り替え忘れるというミスを犯してしまったことがあるので、その際に導入した簡易的な対策を今回は紹介したいと思います。
なぜ、Android Studioを切り替える必要があるのか?
担当しているプロジェクトではAndroid SDKやJDKを個別にインストールするのではなく、Android Studio経由で各SDKを使用するルールにしています。
Android Studio経由にすることのメリットとしては、
- Android SDKやBuild Toolsの管理がしやすい
- 内蔵JDKがGradleやAGP(Android Gradle Plugin)と相性が良い
といったことが挙げられます。
このような運用ルールで開発を行っているため、アプリのAndroid API Levelを上げる作業や導入パッケージのアップグレードの際にJDKやGradleのバージョンを上げる必要がでてくると、それらの要件を満たすAndroid Studioに切り替える必要がありました。
FlutterでのAndroid Studio参照
本題の前にFlutterが参照するAndroid Studioのパスを切り替える方法をおさらいしたいと思います。
Flutterでは以下のコマンドでAndroid Studioのパスを設定します。
flutter config --android-studio-dir="/Applications/Android Studio 2025.2.1 Patch 1.app"
先述した通り、この設定はグローバルなため、複数バージョンのAndroid Studioをインストールしていると切り替え忘れる、といったヒューマンエラーが起きやすいです。
ビルド時にエラー終了すれば参照の誤りに気づくことができますが、そのままビルドが通ってしまう可能性もあるため、厄介な問題です。
切り替え忘れ対策
Androidビルド時に現在のAndroid Studioパスを検査し、想定と違えばビルドを強制停止する、という方針で実装します。
実装方法
android/build.gradleに以下を追加します。
def expectedStudioDir = "/Applications/Android Studio 2025.2.1 Patch 1.app" // macの場合
def currentConfig = "flutter config --machine".execute().text
if (!currentConfig.contains(expectedStudioDir)) {
throw new GradleException(
"ERROR: Android Studio path mismatch. " +
"Run: flutter config --android-studio-dir=\"${expectedStudioDir}\""
)
}
expectedStudioDirにはブランチで使用すべきAndroid Studioのパスを指定します。この部分をブランチごとに管理することでAndroid Studioパスの切り替え忘れを防止することができます。
この方法のメリット
- 既存ビルドフローへの組み込みが容易
- VS CodeのRunボタンでも動作
担当しているプロジェクトではバイナリを書き出す際にしかCLIビルドを使っていなかったため、ビルドフローにスクリプトを追加するようなやり方ではなく、VS Codeのエディタ実行でも動作し、誤りに早く気づけることを重視しました。
この方法のデメリット
- 複数人開発の場合、人によってAndroid Studioの格納パスが異なるとビルドに失敗する
簡易的な対策方法となっているので、開発環境の違いに弱いです。
パスの比較処理を柔軟にすることである程度対応することは可能ですが、対応コストが増え過ぎる場合は別の方法を検討した方が良さそうです。
補足
最初はGit Hooksを使ってブランチ切り替え時にflutter config --android-studio-dir="..."を自動実行することを考えたのですが、以下の観点からこの案は不採用としています。
-
flutter config --android-studio-dir="..."を自動実行しても、結局VS Codeの再起動が必要になる - ブランチの切り替えが頻繁に発生する担当プロジェクトでは
flutter configコマンドを自動実行するよりも必要なタイミングで手動実行する方が混乱しない
どういった方法がベストかはプロジェクトによって異なると思うので、色々な方法を検討してみることをおすすめします。
おわりに
複数人開発では使いづらいですが、お手軽にAndroid Studioの切り替え忘れを防止する方法の共有でした。
今回紹介した方法で少しでもヒューマンエラーを防ぐことができれば幸いです。
株式会社ボトルキューブではFlutterを使ったお仕事を募集中です。
お問い合わせフォームからご連絡ください。
また、一緒に働く仲間も募集しています。
詳細は採用情報ページをご覧ください。