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別設定まで詳しく解説します。
- 「No matching client found for package name」とは
- 代表的な発生状況
- 原因1:Application IDとFirebase登録Package Nameが違う
- 解決方法1:現在のApplication IDを確認する
- namespaceではなくapplicationIdを確認する
- 原因2:google-services.jsonが別アプリ用
- 解決方法2:Firebase Consoleから正しいJSONを再ダウンロードする
- 原因3:FirebaseへAndroid Appを間違ったPackage Nameで登録した
- 解決方法3:正しいPackage NameのAndroid AppをFirebaseへ追加する
- FirebaseのPackage Nameはあとから変更できる?
- 原因4:google-services.jsonを手動編集した
- 解決方法4:JSONは手動編集せず再取得する
- 原因5:applicationIdSuffixを使っている
- 解決方法5:Debug用Android AppをFirebaseへ登録する
- DebugとReleaseでFirebaseを分ける
- 原因6:Product FlavorでApplication IDが変わっている
- 解決方法6:Flavor別にFirebase Appを登録する
- Build TypeとFlavorの組み合わせ
- 原因7:選択しているBuild Variantが想定と違う
- 解決方法7:Build Variantを確認する
- 原因8:applicationIdを動的に変更している
- 解決方法8:最終的なApplication IDを確認する
- 原因9:別Firebase ProjectのJSONを置いている
- 解決方法9:project_idも確認する
- 原因10:複数ClientがあるJSONを誤解している
- JSON内のPackage Nameを確認する
- 原因11:Google Services Pluginが古すぎる
- 解決方法10:Google Services Pluginを確認する
- 原因12:別ModuleのApplication IDを確認している
- 解決方法11:com.android.applicationのModuleを確認する
- 原因13:Manifestのpackageだけを見ている
- 解決方法12:GradleのapplicationIdを基準にする
- 原因14:Debug用JSONをapp直下に置いている
- 解決方法13:Variant別Directoryへ分ける
- 原因15:CI/CDだけでエラーになる
- 解決方法14:CIで復元したJSONを確認する
- 原因16:Build VariantごとのJSON優先順位を理解していない
- 解決方法15:Project内の全JSONを検索する
- 確認手順1:エラーに表示されたPackage Nameをコピーする
- 確認手順2:JSON内を検索する
- 確認手順3:Firebase Consoleを確認する
- 確認手順4:Gradle Syncを実行する
- 確認手順5:Google Services Taskを再実行する
- Windowsの場合
- JSONが正しく処理されたか確認する
- 生成されるResourceの例
- 「google-services.json is missing」との違い
- 「Default FirebaseApp is not initialized」との違い
- Firebaseへ複数Android Appを登録してもよい?
- Firebase API Keyが原因?
- SHA-1 / SHA-256が原因?
- 最短で解決する方法
- それでも解決しない場合
- まとめ
「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を直してください。
最短で解決する方法
- エラーに表示されたPackage Nameを確認する
build.gradle.ktsの最終Application IDを確認するgoogle-services.json内のpackage_nameを検索する- 一致していなければFirebase Consoleへ正しいAndroid Appを追加する
- 新しい
google-services.jsonをダウンロードする - Application Moduleへ配置する
- Debug / Release / Flavor別なら対応Directoryへ置く
- Gradle Syncを実行する
./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}
