I am including feature of gcm in my app, For that i need to maintain two google-services.json one for debug and one for release build. How to do that ??
can i configure gcm without using google-services.json ??

- 320,139
- 94
- 887
- 841

- 10,496
- 3
- 36
- 45
-
Possible duplicate of [No matching client found for package name (Google Analytics) - multiple productFlavors & buildTypes](http://stackoverflow.com/questions/34990479/no-matching-client-found-for-package-name-google-analytics-multiple-productf) – Viral Patel May 03 '16 at 12:55
3 Answers
First, place the respective google_services.json for each buildType in the following locations:
app/src/debug/google_services.json
app/src/test/google_services.json
app/google_services.json
Note: Root app/google_services.json This file should be there according to the build variants copy the json code in the root json file
Now, let’s whip up some gradle tasks in your: app’s build.gradle to automate moving the appropriate google_services.json to app/google_services.json
copy this in the app/Gradle file
task switchToDebug(type: Copy) {
description = 'Switches to DEBUG google-services.json'
from "src/debug"
include "google-services.json"
into "."
}
task switchToRelease(type: Copy) {
description = 'Switches to RELEASE google-services.json'
from "src/release"
include "google-services.json"
into "."
}
Great — but having to manually run these tasks before you build your app is cumbersome. We would want the appropriate copy task above run sometime before: assembleDebug or :assembleRelease is run. Let’s see what happens when :assembleRelease is run: copy this one in the /gradlew file
Zaks-MBP:my_awesome_application zak$ ./gradlew assembleRelease
Parallel execution is an incubating feature.
.... (other tasks)
:app:processReleaseGoogleServices
....
:app:assembleRelease
Notice the :app:processReleaseGoogleServices task. This task is responsible for processing the root google_services.json file. We want the correct google_services.json to be processed, so we must run our copy task immediately beforehand. Add this to your build.gradle. Note the afterEvaluate enclosing.
copy this in the app/Gradle file
afterEvaluate {
processDebugGoogleServices.dependsOn switchToDebug
processReleaseGoogleServices.dependsOn switchToRelease
}
Now, anytime :app:processReleaseGoogleServices is called, our newly defined :app:switchToRelease will be called beforehand. Same logic for the debug buildType. You can run :app:assembleRelease and the release version google_services.json will be automatically copied to your app module’s root folder.
Credit goes to the : Zak Taccardi https://medium.com/google-cloud/automatic-per-variant-google-services-json-configurations-with-gradle-d3d3e40abc0e

- 278
- 3
- 11
The current plugin (com.google.gms:google-services:2.1.X
) supports flavors but not types.
So if you create a productflavor you can put the json file in src/$flavorname
Example:
app/src/
flavor1/google-services.json
flavor2/google-services.json
Currently it doesn't work with types (debug, release...) but you can use somenthing like this:
app/src/release/google-services.json
app/google-services.json
In this case the plugin looks in the locations and stops when it finds a google-services.json file.
If you are using a flavor it becomes:
app/src/foo/release/google-services.json
app/src/foo/google-services.json
You can find updated info here.

- 320,139
- 94
- 887
- 841
I'm currently using the following versions: com.google.gms:google-services:4.3.3, com.google.firebase:firebase-messaging:20.2.0
Place your google-services.json
file in your $projectName/app/src/$buildType
directory. For example, place one json file in src/release
and another in src/debug
. You will likely need to create the release & debug folders.
Note: It's a common mistake to add these files in the app folder, be sure you add this in the src folder as described above.
The google-services plugin always looks for the google-services.json file in two directories: First, on the $projectName/app/src/$buildType/google-services.json. If it does not find it here, it goes one level above, to the $projectName/app/google-services.json. So, when you are building the debug version of your app, it will search for the google-services.json on the $projectName/app/src/debug/ directory.
At the link below, see David Ojeda's response.
-
I have only src/debug folder which holds for the debug build. Another for production app which is contained in src/google_services.json. Both the files have array of "client_info" object for both com.myapp.debug and com.myapp. Is that correct ? – user2234 Oct 14 '20 at 10:00
-
That may or may not work but my answer says to put your production google services in the src/release folder, not the src folder. That's how i did mine. – James Oct 15 '20 at 11:11