【Android Studio】Build Variantを切り替えてもFirebaseの接続先が変わらない原因と解決策(Invalidate Caches)

Androidアプリ

Androidアプリ開発で、Build VariantsやProduct Flavorsを使って「開発環境(dev)」と「本番環境(production)」を切り替えている際、「devに切り替えたのに、なぜかproductionのFirebase(DB/Firestore)に接続されてしまう」というトラブルに遭遇したことはありませんか?

コードや build.gradle の記述を見直しても問題がない場合、原因はAndroid StudioやGradle内部に残った「古いビルドキャッシュ」である可能性が非常に高いです。

本記事では、この現象が発生するメカニズムと、一発で解決するための手順(Invalidate Caches / Restart)を分かりやすく解説します。

発生する症状と主な原因

どのような症状が出るか?

  • Build Variantsで dev バリアントを選択してビルドした。
  • それなのに、アプリ起動時に接続されるFirebaseプロジェクトが production(本番)のままになっている。
  • 過去に production バリアントでビルドした履歴がある。

なぜ起きるのか?(メカニズム)

Firebaseの設定ファイルである google-services.json は、Gradleビルド時にバリアントに応じた適切なファイルが読み込まれ、リソース(values.xml 等)として自動生成されます。

しかし、以前ビルドした際の中間生成ファイルやAndroid Studio内部のインデックス・キャッシュが残っていると、バリアントを切り替えても古いリソースが再利用されてしまい、設定が更新されないという不具合が発生します。

【速攻解決】Invalidate Caches / Restartの手順

この問題は、Android Studioの強力なキャッシュ消去機能を使うことで一発で解決できます。

手順1:Invalidate Caches を実行する

  1. Android Studioの上部メニューから File > Invalidate Caches... を選択します。
  2. チェックボックスが表示されたら、以下にチェックを入れます(通常はデフォルトのままでOKです)。
    • Clear file system cache and Local History
    • Clear VCS Log caches and indexes
  3. Invalidate and Restart ボタンをクリックします。

Android Studioが再起動し、プロジェクトのインデックス作成(Indexing)が完了するまで少し待ちます。

手順2:アプリを端末から削除して再ビルド

キャッシュをクリアした後は、以下の手順でクリーンビルドを行います。

  1. 実機またはエミュレータ上の既存アプリを一度アンインストールします。
  2. メニューの Build > Clean Project を実行します。
  3. Build Variantsが dev になっていることを確認し、Run(再ビルド&実行)します。

これで、正しい dev 環境のFirebaseプロジェクトに接続されるようになります。

今後同じ問題を防ぐためのチェックリスト

キャッシュクリアを行っても解決しない場合や、予防策として以下もあわせて確認しておきましょう。

1. google-services.json の配置ディレクトリを確認する

フレーバーごとに設定ファイルを分ける場合は、以下のように配置されているか確認します。

  • app/src/dev/google-services.json (開発用)
  • app/src/production/google-services.json (本番用)

app/google-services.json(直下)にファイルが存在すると、そちらが優先して読み込まれる場合があるため削除または退避させてください。

2. 現在の接続先プロジェクトをコードでログ出力する

ビルド時にどのFirebaseプロジェクトに接続されているか不安な場合は、Application クラスや初期画面で以下のログを出力して確認する設計にしておくと便利です。

Kotlin

// 現在接続されているFirebaseのProject IDをログ出力
val projectId = FirebaseApp.getInstance().options.projectId
Log.d("FirebaseCheck", "Current Project ID: $projectId")

まとめ:設定が反映されない時は「まずキャッシュクリア」

Android StudioでBuild Variants(Flavor)を切り替えたのに接続先(DB/Firebase)が変わらない時は、コードを疑う前に「ビルドキャッシュの残留」を疑いましょう。

  • File > Invalidate Caches...
  • アプリの再インストール & Clean Project

この2つを実行することで、無駄なハマり時間を大幅に削減できます。バリアント切り替え時の挙動に違和感覚えたら、まずはキャッシュクリアをお試しください。

コメント

タイトルとURLをコピーしました