PC パソコン

Firebase「No matching client found for package name」の解決方法

Android StudioでFirebaseを導入したAndroidアプリをビルドすると、「No matching client found for package name」というエラーが表示されることがあります。

No matching client found for package name 'com.example.app'

このエラーは、現在ビルドしているAndroidアプリのPackage Name / Application IDと、google-services.json内に登録されているAndroid ClientのPackage Nameが一致していない場合に発生します。

Google Services Gradle Pluginは、google-services.json内のclient配列を順番に確認し、client_info/android_client_info/package_nameが現在のPackage Nameと一致するClientを探します。一致するClientが見つからない場合、例外を出してビルドを停止します。 :contentReference[oaicite:0]{index=0}

つまりこのエラーでは、JSONファイルそのものはGradleに認識されています。問題は「そのJSONが今のアプリに対応していない」ことです。

この記事では、「No matching client found for package name」の原因と、Application ID、Firebase Console、Product Flavor、applicationIdSuffix、Debug / Release別設定まで詳しく解説します。

  1. 「No matching client found for package name」とは
  2. 代表的な発生状況
  3. 原因1:Application IDとFirebase登録Package Nameが違う
  4. 解決方法1:現在のApplication IDを確認する
  5. namespaceではなくapplicationIdを確認する
  6. 原因2:google-services.jsonが別アプリ用
  7. 解決方法2:Firebase Consoleから正しいJSONを再ダウンロードする
  8. 原因3:FirebaseへAndroid Appを間違ったPackage Nameで登録した
  9. 解決方法3:正しいPackage NameのAndroid AppをFirebaseへ追加する
  10. FirebaseのPackage Nameはあとから変更できる?
  11. 原因4:google-services.jsonを手動編集した
  12. 解決方法4:JSONは手動編集せず再取得する
  13. 原因5:applicationIdSuffixを使っている
  14. 解決方法5:Debug用Android AppをFirebaseへ登録する
  15. DebugとReleaseでFirebaseを分ける
  16. 原因6:Product FlavorでApplication IDが変わっている
  17. 解決方法6:Flavor別にFirebase Appを登録する
  18. Build TypeとFlavorの組み合わせ
  19. 原因7:選択しているBuild Variantが想定と違う
  20. 解決方法7:Build Variantを確認する
  21. 原因8:applicationIdを動的に変更している
  22. 解決方法8:最終的なApplication IDを確認する
  23. 原因9:別Firebase ProjectのJSONを置いている
  24. 解決方法9:project_idも確認する
  25. 原因10:複数ClientがあるJSONを誤解している
  26. JSON内のPackage Nameを確認する
  27. 原因11:Google Services Pluginが古すぎる
  28. 解決方法10:Google Services Pluginを確認する
  29. 原因12:別ModuleのApplication IDを確認している
  30. 解決方法11:com.android.applicationのModuleを確認する
  31. 原因13:Manifestのpackageだけを見ている
  32. 解決方法12:GradleのapplicationIdを基準にする
  33. 原因14:Debug用JSONをapp直下に置いている
  34. 解決方法13:Variant別Directoryへ分ける
  35. 原因15:CI/CDだけでエラーになる
  36. 解決方法14:CIで復元したJSONを確認する
  37. 原因16:Build VariantごとのJSON優先順位を理解していない
  38. 解決方法15:Project内の全JSONを検索する
  39. 確認手順1:エラーに表示されたPackage Nameをコピーする
  40. 確認手順2:JSON内を検索する
  41. 確認手順3:Firebase Consoleを確認する
  42. 確認手順4:Gradle Syncを実行する
  43. 確認手順5:Google Services Taskを再実行する
  44. Windowsの場合
  45. JSONが正しく処理されたか確認する
  46. 生成されるResourceの例
  47. 「google-services.json is missing」との違い
  48. 「Default FirebaseApp is not initialized」との違い
  49. Firebaseへ複数Android Appを登録してもよい?
  50. Firebase API Keyが原因?
  51. SHA-1 / SHA-256が原因?
  52. 最短で解決する方法
  53. それでも解決しない場合
  54. まとめ

「No matching client found for package name」とは

代表的なエラーは次のような形式です。

Execution failed for task ':app:processDebugGoogleServices'.

No matching client found for package name
'com.example.myapp'

このエラーはGoogle Services Gradle Pluginがgoogle-services.jsonを処理するときに発生します。

JSONには、Firebase Projectへ登録されたAndroidアプリごとのClient情報が入っています。

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

Pluginは、このpackage_nameと現在ビルド中のアプリのPackage Nameを比較します。Firebase公式ドキュメントでも、この一致判定によって利用するClientを選び、一致するものがなければ例外になると説明されています。 :contentReference[oaicite:1]{index=1}

重要:「google-services.json is missing」とは違います。今回のエラーではJSONは見つかっていますが、その中に現在のApplication IDへ一致するClientがありません。

代表的な発生状況

  • Application IDを変更したあと
  • ProjectのPackage Nameを変更したあと
  • 別のFirebase ProjectからJSONをコピーしたとき
  • 古いgoogle-services.jsonを使っているとき
  • Debug用にapplicationIdSuffixを追加したとき
  • Product Flavorを追加したとき
  • DebugとReleaseでPackage Nameが異なるとき
  • Firebaseへ別Package NameでAndroid Appを登録したとき
  • 別アプリ用のJSONを誤って配置したとき
  • 複数ModuleでFirebase設定を共有しようとしたとき

原因1:Application IDとFirebase登録Package Nameが違う

もっとも一般的な原因です。

Android側:

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

JSON側:

"package_name": "com.example.oldapp"

この2つが違えば、Pluginは一致するClientを見つけられません。

解決方法1:現在のApplication IDを確認する

app/build.gradle.ktsを確認します。

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

Groovy:

android { defaultConfig { applicationId "com.example.myapp" } }

この値をFirebase Consoleへ登録したAndroid AppのPackage Nameと比較してください。

namespaceではなくapplicationIdを確認する

最近のAndroid Projectでは、

namespace = "com.example.myapp"

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

のようにnamespaceとapplicationIdが異なることがあります。

FirebaseのAndroid Client照合で重要なのは、実際にビルドされるPackage / Application IDです。

注意:namespaceがFirebase登録値と一致していても、applicationIdが違えばエラーになる可能性があります。

原因2:google-services.jsonが別アプリ用

複数のAndroidアプリを開発していると、別アプリ用のJSONを誤ってコピーすることがあります。

たとえば現在のアプリ:

com.example.myapp

JSON:

com.example.sample

では一致しません。

解決方法2:Firebase Consoleから正しいJSONを再ダウンロードする

Firebase Console → Project settings → General → Your apps → 対象Android App → google-services.jsonをダウンロード

取得したファイルを通常は、

app/google-services.json

へ配置します。

Firebaseでは、登録済みAndroid AppのConfig Fileをいつでも再取得できます。 :contentReference[oaicite:2]{index=2}

原因3:FirebaseへAndroid Appを間違ったPackage Nameで登録した

Firebase ConsoleでAndroid Appを追加するとき、Package Nameを手入力します。

ここで、

com.example.myapplication

を登録したあと、実際のProjectが、

com.example.myapp

なら一致しません。

解決方法3:正しいPackage NameのAndroid AppをFirebaseへ追加する

Firebase Project内に、現在のApplication IDでAndroid Appを追加します。

Firebase Console → Project Overview → Add app → Android → Android package name

ここへ、

com.example.myapp

を登録します。

その後、新しいgoogle-services.jsonをダウンロードしてください。

FirebaseのPackage Nameはあとから変更できる?

Firebaseへ登録したAndroid AppのPackage Nameを、既存Clientの設定値として自由に書き換える運用はおすすめできません。

Package Nameが変わった場合は、新しいPackage NameのAndroid AppをFirebase Projectへ追加して、そのConfig Fileを取得する方法が安全です。

Firebase公式ドキュメントでも、Config FileはFirebaseへ登録したAppとFirebase Projectを関連付けるためのものと説明されています。 :contentReference[oaicite:3]{index=3}

原因4:google-services.jsonを手動編集した

エラーを直そうとして、JSONの、

"package_name": "com.example.myapp"

だけを書き換える人もいます。

しかしJSONには、

  • Firebase App ID
  • Project ID
  • API Key
  • OAuth Client情報
  • Storage Bucket等

複数のFirebase設定が関連付けられています。

Firebase公式ドキュメントでは、Config Fileを手動変更することは推奨されていません。無効または不完全な値を設定すると問題が起こる可能性があります。 :contentReference[oaicite:4]{index=4}

解決方法4:JSONは手動編集せず再取得する

Firebase Consoleで正しいAndroid Appを登録し、対応する、

google-services.json

を再ダウンロードしてください。

推奨:Package Nameだけを強引に書き換えてビルドを通すより、Firebase Console側の登録を正しく直してください。

原因5:applicationIdSuffixを使っている

Debug BuildだけSuffixを追加する構成は非常によくあります。

android { buildTypes { debug { applicationIdSuffix = ".debug" } } }

この場合、Release:

com.example.myapp

Debug:

com.example.myapp.debug

になります。

FirebaseにRelease用のcom.example.myappしか登録されていなければ、Debug Buildで一致するClientが見つからない可能性があります。

解決方法5:Debug用Android AppをFirebaseへ登録する

Firebase Consoleへ、

com.example.myapp.debug

をAndroid Appとして追加します。

そのConfig Fileを、

app/src/debug/google-services.json

へ配置できます。

DebugとReleaseでFirebaseを分ける

app/ └── src/ ├── debug/ │ └── google-services.json └── release/ └── google-services.json

Google Services Gradle PluginはBuild TypeごとのConfig Fileに対応しています。Firebase公式ドキュメントでも、Release Directoryへ別のgoogle-services.jsonを配置し、本番Firebase Projectを分ける方法が説明されています。 :contentReference[oaicite:5]{index=5}

原因6:Product FlavorでApplication IDが変わっている

たとえば、

android { productFlavors { create("free") { applicationId = "com.example.app.free" }
    create("paid") {
        applicationId =
            "com.example.app.paid"
    }
}

}

の場合、Firebase側にもそれぞれに対応するAndroid Appが必要です。

解決方法6:Flavor別にFirebase Appを登録する

Firebaseへ、

com.example.app.free

com.example.app.paid

をそれぞれ登録します。

Config File:

app/ └── src/ ├── free/ │ └── google-services.json └── paid/ └── google-services.json

Google Services Gradle PluginはFlavor固有のDirectory構成もサポートしています。 :contentReference[oaicite:6]{index=6}

Build TypeとFlavorの組み合わせ

たとえば、

freeDebug freeRelease paidDebug paidRelease

が存在する場合、より細かくConfigを分けることもできます。

app/src/debug/free/google-services.json

app/src/release/free/google-services.json

Firebase公式ドキュメントでは、Build TypeとProduct Flavorを組み合わせたDirectoryも有効とされています。 :contentReference[oaicite:7]{index=7}

原因7:選択しているBuild Variantが想定と違う

Android Studioで、

freeDebug

をBuildしているつもりが、

paidDebug

になっているなど、Build Variantの選択ミスがあります。

解決方法7:Build Variantを確認する

Android Studioで、

Build Variants

を開き、現在ビルド中のVariantを確認してください。

そのVariantの最終Application IDとFirebase設定が一致する必要があります。

原因8:applicationIdを動的に変更している

FlavorやGradle ScriptによってApplication IDを変えている場合があります。

たとえば、

applicationIdSuffix = ".staging"

が別Gradle Fileに定義されていると、見落としやすくなります。

解決方法8:最終的なApplication IDを確認する

エラーに表示されているPackage Nameが、Gradleが実際に使用している値です。

No matching client found for package name 'com.example.myapp.staging'

この文字列をFirebase Consoleへ登録済みのPackage Nameと直接比較してください。

原因9:別Firebase ProjectのJSONを置いている

Firebase Project A:

com.example.app

Firebase Project B:

com.example.otherapp

という状況で、Project BのJSONをAndroid Projectへ置いてしまうケースです。

解決方法9:project_idも確認する

JSON上部には、

"project_info": { "project_id": "my-firebase-project" }

があります。

Firebase Consoleで開いているProjectと一致しているか確認してください。

原因10:複数ClientがあるJSONを誤解している

Firebase Androidのgoogle-services.jsonには、同じFirebase Projectに登録された複数Android AppのClientが含まれることがあります。

Firebase公式ドキュメントでも、Android用Config Fileでは同じProjectに登録されたAndroid Appが複数含まれ得ることが説明されています。 :contentReference[oaicite:8]{index=8}

その場合も、Pluginは現在のPackage Nameに一致するClientだけを選びます。 :contentReference[oaicite:9]{index=9}

JSON内のPackage Nameを確認する

google-services.jsonを開き、

"package_name"

を検索します。

macOS / Linux:

grep -n '"package_name"' \ app/google-services.json

Windows PowerShell:

Select-String ` -Path app\google-services.json ` -Pattern '"package_name"'

現在のApplication IDが一覧に含まれているか確認します。

原因11:Google Services Pluginが古すぎる

今回のエラー自体はPackage Name不一致が直接原因であることがほとんどですが、古いProjectではGoogle Services Pluginも非常に古い場合があります。

Firebaseの2026年9月時点のRelease情報では、Google Services Pluginの最新Versionとして4.5.0が掲載されています。 :contentReference[oaicite:10]{index=10}

解決方法10:Google Services Pluginを確認する

Plugin DSL:

plugins { id("com.google.gms.google-services") version "4.5.0" apply false }

App Module:

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

ただし、Pluginを更新してもPackage Nameが違うままならこのエラーは解決しません。

原因12:別ModuleのApplication IDを確認している

マルチモジュールProjectでは、

:app :feature-home :core

などがあります。

Firebase設定で重要なのは実際のApplication Moduleです。

解決方法11:com.android.applicationのModuleを確認する

plugins { id("com.android.application") }

このModuleのapplicationIdとJSONを比較してください。

原因13:Manifestのpackageだけを見ている

古いAndroid ProjectではAndroidManifest.xmlに、

<manifest package="com.example.app">

と書かれていることがあります。

しかし現在のAndroid Gradle Pluginでは、Build時のApplication IDはGradle設定によって決まります。

Firebase照合では、Manifestだけを見て判断しないようにしてください。

解決方法12:GradleのapplicationIdを基準にする

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

FlavorやSuffixがある場合は、それらを反映した最終IDが対象です。

原因14:Debug用JSONをapp直下に置いている

DebugとReleaseでFirebaseを分けているのに、Debug用JSONを、

app/google-services.json

へ置くと、Release Buildでも同じConfigが使われる可能性があります。

解決方法13:Variant別Directoryへ分ける

app/src/debug/google-services.json

app/src/release/google-services.json

これで各Build Typeへ対応するFirebase Clientを分けられます。 :contentReference[oaicite:11]{index=11}

原因15:CI/CDだけでエラーになる

Localでは正しいJSONを使っているが、CI側で古いJSONを復元しているケースがあります。

解決方法14:CIで復元したJSONを確認する

Package Nameだけ確認:

grep -n '"package_name"' \ app/google-services.json

CIでBuildしているVariantのApplication IDと一致しているか確認してください。

原因16:Build VariantごとのJSON優先順位を理解していない

Google Services Pluginは、Build Variantに応じたConfig Fileを検索します。

Firebase公式ドキュメントでは、

app/google-services.json

app/src/release/google-services.json

app/src/release/free/google-services.json

のような複数Directory構成がサポートされています。 :contentReference[oaicite:12]{index=12}

意図しないDirectoryに古いJSONが残っていると、想定外のConfigが利用される可能性があります。

解決方法15:Project内の全JSONを検索する

macOS / Linux:

find . \ -name "google-services.json"

Windows PowerShell:

Get-ChildItem ` -Recurse ` -Filter google-services.json

不要な古いConfigが残っていないか確認してください。

確認手順1:エラーに表示されたPackage Nameをコピーする

たとえば、

No matching client found for package name 'com.example.app.debug'

なら、比較対象は、

com.example.app.debug

です。

確認手順2:JSON内を検索する

"package_name": "com.example.app.debug"

が存在するか確認してください。

確認手順3:Firebase Consoleを確認する

Firebase Console → Project settings → General → Your apps

ここに同じPackage NameのAndroid Appが存在するか確認します。

確認手順4:Gradle Syncを実行する

File → Sync Project with Gradle Files

Application IDやPlugin設定を変更した場合はSyncします。

確認手順5:Google Services Taskを再実行する

Debug:

./gradlew processDebugGoogleServices

Project構成によってTask名は変わる場合があります。

通常Build:

./gradlew assembleDebug

Windowsの場合

gradlew.bat assembleDebug

JSONが正しく処理されたか確認する

Google Services Pluginは処理後にResourceを生成します。

app/build/generated/res/google-services/ debug/values/values.xml

Firebase公式ドキュメントでも、JSON処理結果としてこのようなResourceが生成されると説明されています。 :contentReference[oaicite:13]{index=13}

生成されるResourceの例

google_app_id gcm_defaultSenderId google_api_key project_id

これらが生成されていれば、対応Clientの選択とJSON処理は成功しています。

「google-services.json is missing」との違い

google-services.json is missing → JSONファイル自体が見つからない

No matching client found
→ JSONは見つかった
→ Package Nameに一致するClientがない

今回のエラーでは、JSONを同じ場所へ何度コピーし直しても、中身が違えば解決しません。

「Default FirebaseApp is not initialized」との違い

「No matching client found」は基本的にBuild時のGoogle Services Pluginエラーです。

一方、

Default FirebaseApp is not initialized

はRuntimeでFirebase初期化に失敗したときに発生するエラーです。

まず今回のPackage Name不一致を解決し、APK / AABを正常にBuildできる状態にしてください。

Firebaseへ複数Android Appを登録してもよい?

問題ありません。

同じFirebase Projectに、

com.example.app

com.example.app.debug

com.example.app.free

com.example.app.paid

など複数Android Appを登録できます。

Firebase公式ドキュメントでも、Android用Config Fileには同じFirebase Project内の複数Android App情報が含まれる場合があると説明されています。 :contentReference[oaicite:14]{index=14}

Firebase API Keyが原因?

このエラーの直接原因ではありません。

「No matching client found」はGoogle Services PluginがPackage Nameに一致するClientを選べないことが原因です。

API Keyの有効性は、その後Firebase Serviceへアクセスするときに別の問題として現れます。

SHA-1 / SHA-256が原因?

通常、このエラーの直接原因ではありません。

SHA-1やSHA-256はGoogle Sign-In、Firebase Authentication、Dynamic Linksなど特定機能の設定で重要ですが、

No matching client found for package name

はPackage Name Clientの一致判定で発生します。

まずPackage Nameを直してください。

最短で解決する方法

  1. エラーに表示されたPackage Nameを確認する
  2. build.gradle.ktsの最終Application IDを確認する
  3. google-services.json内のpackage_nameを検索する
  4. 一致していなければFirebase Consoleへ正しいAndroid Appを追加する
  5. 新しいgoogle-services.jsonをダウンロードする
  6. Application Moduleへ配置する
  7. Debug / Release / Flavor別なら対応Directoryへ置く
  8. Gradle Syncを実行する
  9. ./gradlew assembleDebugで再ビルドする

それでも解決しない場合

「No matching client found for package name」が続く場合は、次を確認してください。

  • エラーに表示されたPackage Nameを正確に確認したか
  • applicationIdを確認したか
  • namespaceだけを見ていないか
  • applicationIdSuffixが付いていないか
  • Product FlavorでApplication IDが変化していないか
  • 現在のBuild Variantを確認したか
  • JSON内に一致するpackage_nameがあるか
  • 正しいFirebase ProjectのJSONか
  • 古いJSONを使っていないか
  • Debug / Release別JSONの配置を確認したか
  • Project内に複数の古いJSONが残っていないか
  • CI/CDだけ別JSONを使っていないか
  • Firebase Consoleへ現在のPackage Nameが登録されているか
  • JSONを手動編集していないか

まとめ

Firebase「No matching client found for package name」は、現在ビルドしているAndroidアプリのPackage Name / Application IDに一致するClientがgoogle-services.json内に存在しない場合に発生します。

Google Services Gradle Pluginは、JSON内の、

client_info → android_client_info → package_name

を確認し、現在のPackage Nameに一致するClientを選択します。一致しなければ例外になります。 :contentReference[oaicite:15]{index=15}

最も確実な解決方法は、現在のApplication IDを確認し、Firebase ConsoleへそのPackage NameのAndroid Appを登録して、新しいgoogle-services.jsonを取得することです。

applicationId = Firebase Android App package name = google-services.json package_name

この3つを一致させてください。

また、applicationIdSuffixやProduct Flavorを使用している場合は、Debug、Release、Free、Paidなどで最終Application IDが変わることがあります。その場合はFirebaseへ複数Android Appを登録し、Variant別のgoogle-services.jsonを配置できます。Google Services Gradle PluginはBuild TypeとProduct FlavorごとのConfig Fileを正式にサポートしています。 :contentReference[oaicite:16]{index=16}

JSON内部を手動編集するより、Firebase Consoleから正しいConfig Fileを再取得してください。Firebase公式ドキュメントでも、Config Fileの手動変更は推奨されていません。 :contentReference[oaicite:17]{index=17}