TestCrew
Firebase・Android設定

google-services.jsonとは?配置場所・更新方法・接続先の確認

google-services.jsonの役割、Android・Flutter・React Nativeでの配置場所、Firebaseプロジェクトやパッケージ名の確認方法を解説します。

公開
2026年8月2日
更新
2026年8月2日
公式情報確認
2026年8月2日
google-services.jsonがAndroidアプリとFirebaseプロジェクトを結び付ける役割を示す図
この記事の目次

google-services.jsonは、AndroidアプリとFirebaseプロジェクトを結び付ける構成ファイルです。

ファイルを間違えると、ビルドエラーだけでなく、意図しないFirebaseプロジェクトへデータを送信する問題も起こります。

  • Firestoreにデータが表示されない
  • 別のプロジェクトへユーザーが登録される
  • Googleログインが動かない
  • Cloud Messagingの通知が届かない
  • No matching client found for package nameが表示される
  • google-services.json is missingが表示される

まず、ファイルが何を持ち、ビルド時にどう使われるかを理解します。

google-services.jsonの役割

FirebaseコンソールへAndroidアプリを登録すると、そのアプリ用のgoogle-services.jsonを取得できます。

主な情報は次のとおりです。

  • FirebaseプロジェクトID
  • Google Cloudプロジェクト番号
  • FirebaseアプリID
  • Androidパッケージ名
  • Firebase向けAPIキー
  • OAuthクライアント情報
  • Storageバケット等の設定

Google Services Gradle Pluginは、JSONを読み込み、Firebase SDKが参照するAndroidリソースへ変換します。

google-services.json

Google Services Gradle Plugin

google_app_id / project_id / APIキー等を生成

Firebase SDKが初期化に利用

秘密鍵ではない

google-services.jsonにはプロジェクト固有の情報が入っていますが、Firebaseの管理者秘密鍵ではありません。

ファイルを隠すことだけでは、FirestoreやStorageのデータを保護できません。

必要な対策は次のとおりです。

  • Firebase Authentication
  • Firestore Security Rules
  • Realtime Database Rules
  • Storage Security Rules
  • Firebase App Check
  • APIキーの適切な制限

次の情報をJSONへ追加してはいけません。

  • サービスアカウント秘密鍵
  • 外部APIのシークレット
  • 決済サービスの秘密鍵
  • 管理者用トークン
  • OAuthクライアントシークレット

Androidでの配置場所

一般的なAndroidプロジェクトでは、アプリモジュールの直下へ配置します。

project/
├── app/
│   ├── google-services.json
│   ├── build.gradle.kts
│   └── src/
├── build.gradle.kts
└── settings.gradle.kts

正しい基本パス:

app/google-services.json

プロジェクト全体のルートではありません。

間違った例

project/google-services.json
project/config/google-services.json

ダウンロードフォルダに置いたままでも、Gradleは読み込みません。

Flutterでの配置場所

FlutterプロジェクトのAndroidアプリモジュールは通常、android/app/です。

flutter_project/
├── android/
│   └── app/
│       ├── google-services.json
│       └── build.gradle.kts
├── lib/
└── pubspec.yaml

基本パス:

android/app/google-services.json

現在のFlutterFireでは、次のコマンドでプラットフォーム設定を構成します。

flutterfire configure

これにより、通常は次のファイルも生成されます。

lib/firebase_options.dart

Flutterでは、Android側のJSONとDart側のFirebaseOptionsが同じFirebaseプロジェクトを指しているか確認してください。

React Nativeでの配置場所

一般的なベアReact Nativeプロジェクトでも、Androidアプリモジュールはandroid/app/です。

android/app/google-services.json

ExpoやEAS Buildでは、app configのandroid.googleServicesFileからファイルパスを指定する構成があります。ビルド方式に応じて、最終的なAndroidプロジェクトへ正しいファイルが渡されているか確認します。

ファイル名を確認する

同じファイルを何度もダウンロードすると、OSが名前を変更する場合があります。

google-services (1).json
google-services (2).json

使用する名前は次のとおりです。

google-services.json

Windowsでは拡張子が隠れ、実際には次のようになっている場合もあります。

google-services.json.txt
google-services.json.json

拡張子を表示して確認してください。

パッケージ名を確認する

JSON内には、Firebaseへ登録したAndroidパッケージ名があります。

{
  "client": [
    {
      "client_info": {
        "android_client_info": {
          "package_name": "com.example.app"
        }
      }
    }
  ]
}

Gradle側の最終的なapplicationIdと一致させます。

android {
    defaultConfig {
        applicationId = "com.example.app"
    }
}

namespaceではなくapplicationIdを確認する

android {
    namespace = "com.example.app.code"

    defaultConfig {
        applicationId = "com.example.app"
    }
}

Firebaseへ登録する値は、通常、端末とGoogle Playでアプリを識別するapplicationIdです。

接続先Firebaseプロジェクトを確認する

google-services.jsonをテキストエディタで開き、project_idを確認します。

{
  "project_info": {
    "project_id": "example-app-prod"
  }
}

Firebaseコンソールで開いているプロジェクトIDと一致するか確認してください。

表示名ではなく、一意のproject_idを基準にします。

主な確認項目

JSON項目確認内容
project_id接続先のFirebaseプロジェクト
project_numberGoogle Cloud・FCMで使われる番号
mobilesdk_app_idFirebaseへ登録された個別アプリID
package_nameAndroidのapplication ID
current_key自動的に対応付けられたAPIキー

APIキーだけで判断せず、project_idpackage_nameも一緒に確認します。

Gradleプラグインを設定する

JSONを置くだけでなく、アプリモジュールへGoogle Services Pluginを適用します。

Kotlin DSL

plugins {
    id("com.android.application")
    id("com.google.gms.google-services")
}

プロジェクトレベルでは、公式セットアップに記載された現行バージョンを宣言します。

plugins {
    id("com.google.gms.google-services") version "現行バージョン" apply false
}

プラグインがJSONを処理すると、次のような生成物が作られます。

app/build/generated/res/google-services/

生成されたvalues.xmlには、google_app_idproject_idなどが含まれます。

開発環境と本番環境を分ける

product flavorを使用する場合、環境ごとに構成ファイルを配置できます。

app/
└── src/
    ├── development/
    │   └── google-services.json
    └── production/
        └── google-services.json

例:

development
applicationId: com.example.app.dev
Firebase: example-app-dev

production
applicationId: com.example.app
Firebase: example-app-prod

環境別に分ける場合、ファイル名だけでなく、それぞれのproject_idpackage_nameを確認してください。

再ダウンロードする場面

次の変更を行ったときは、Firebaseコンソールから最新版を取得するか、FlutterFireの構成を更新します。

  • 新しいAndroidアプリをFirebaseへ登録した
  • Googleログイン用のSHA-1を追加した
  • OAuthクライアント設定を変更した
  • 別のFirebaseプロジェクトへ切り替えた
  • 新しいproduct flavorを追加した
  • APIキーの構成を変更した
  • Flutterで対象プラットフォームやFirebase製品を追加した

Googleログインを設定した場合は、OAuthクライアント情報が更新されるため、最新の構成ファイルを取得します。

ファイルを置き換えた後のビルド

Android

./gradlew clean
./gradlew assembleDebug

App Bundleの場合:

./gradlew clean
./gradlew bundleRelease

Flutter

flutterfire configure
flutter clean
flutter pub get
flutter run

Google Playへ更新版を出す場合は、versionCodeも増やします。

代表的なエラー

File google-services.json is missing

主な確認項目:

  • ファイルが存在するか
  • アプリモジュール直下か
  • ファイル名が正しいか
  • CIでファイルを復元しているか
  • build type・flavor用の配置があるか

No matching client found for package name

主な確認項目:

  • Gradleの最終applicationId
  • JSONのpackage_name
  • applicationIdSuffix
  • 選択中のbuild variant
  • 正しいFirebase Androidアプリから取得したファイルか

データが別プロジェクトへ保存される

主な確認項目:

  • project_id
  • build variant
  • flavor用JSONの配置
  • Flutterのfirebase_options.dart
  • CIで復元したファイル

CIでの取り扱い

google-services.jsonをGitへ含めない運用では、CIでビルド前に復元します。

- name: Restore google-services.json
  run: |
    mkdir -p android/app
    echo "${{ secrets.GOOGLE_SERVICES_JSON_BASE64 }}" \
      | base64 --decode \
      > android/app/google-services.json

復元後にファイルの存在とproject_idを検証すると、開発用・本番用の取り違えを減らせます。

ファイルの中身をCIログへそのまま出力しないでください。

よくある誤解

JSONを手で編集すれば別アプリに使える

package_nameだけを書き換える方法は避けてください。

FirebaseアプリID、OAuthクライアント、APIキーなど複数の情報が対応しているため、正しいAndroidアプリをFirebaseへ登録して正式なファイルを取得します。

JSONを差し替えればデータも移動する

移動しません。

新しくビルドしたアプリの接続先が変わるだけです。Firestore、Authentication、Storageなどの既存データは、必要に応じて別途移行します。

APIキーを隠せばデータを保護できる

Firebaseデータの保護には、Security Rules、Authentication、App Checkなどが必要です。

まとめ

google-services.jsonで確認する基本は次のとおりです。

  1. 正しいFirebaseプロジェクトから取得する
  2. 正しいアプリモジュールへ配置する
  3. ファイル名を正確にする
  4. applicationIdpackage_nameを一致させる
  5. project_idで接続先を確認する
  6. Google Services Gradle Pluginを適用する
  7. flavorごとに接続先を分ける
  8. OAuthやSHA変更後は最新版を取得する
  9. FlutterではFirebaseOptionsも更新する
  10. 差し替え後にクリーンビルドする

接続エラーが起きた場合は、ファイルを何度も入れ直す前に、project_idpackage_name、配置場所、build variantを順番に確認してください。

一次情報

公式参考資料

Google PlayやFirebaseの画面・要件は変更される場合があります。公開作業の前に、リンク先の最新情報も確認してください。

Analytics設定

TestCrewは、Webサイトの改善のためGoogle LLCが提供するGoogle Analyticsを使用します。利用の可否を変更でき、変更後はこのページの以後の計測と次回以降の訪問に反映されます。 プライバシーポリシーを見る