FlutterでAndroid Studioの切り替え忘れを防止する | TechDistill
> Source: Qiita_Trend
Execute Primary Source
// Problem
Flutterが参照するAndroid Studioのパスはグローバル設定として保持される。そのため、APIレベルの更新等でプロジェクトごとに異なるAndroid Studio(および内蔵JDK)を使い分ける運用を行う際、ブランチ切り替え時に設定変更を忘れると、意図しない環境でビルドが進行してしまうリスクがある。
// Approach
android/build.gradleに、`flutter config --machine`コマンドを実行して現在の設定を取得し、期待されるパスと比較するロジックを実装する。設定が一致しない場合は`GradleException`をスローしてビルドを中断させることで、開発者が誤った環境に気づけるようにする。
// Result
VS Codeの実行ボタンを含む既存のビルドフローに容易に組み込めるため、開発者はビルド失敗を通じて即座に設定ミスを検知できる。ただし、パスを直接記述するため、開発者ごとに環境が異なる複数人開発においては、そのままでは適用が困難という制約がある。
Senior Engineer Insight
> 個人の開発体験(DX)を向上させるための「ガードレール」として、非常に合理的かつ即効性のある手法だ。ビルドが通ってしまうことで誤った環境に気づけないという、静かな失敗を「明示的なエラー」に変換する設計思想は評価できる。しかし、パスのハードコードはポータビリティを欠いており、チーム開発への導入には不向きだ。実戦投入するならば、パスを環境変数やプロジェクト内の設定ファイルから取得する仕組みへ抽象化し、環境の差異を吸収する設計に昇華させるべきである。