Issue
I'm implementing the new Google Cloud Messaging following the guides from the Google Developers page here
I've successfully run and test it. But my problem now is I have different product flavors with different applicationId/packageName and different Google Cloud Messaging Project Id. The google-services.json
have to be put at the /app/google-services.json
not the flavors folder.
Is there any way to make the google-services.json
config different for many flavors?
Solution
Google included support for flavors in version 2.0 of the play services plugin. Since this version of the gradle plugin com.google.gms:google-services:2.0.0-alpha3
you can do this
Step 1: add to gradle
// To auto-generate google map api key of google-services.json
implementation 'com.google.android.gms:play-services-maps:17.0.0'
Step 2: add to AndroidManifest.xml in the application tag
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/google_api_key" />
Step 3: download each flavor JSON file from firebase and add it
app/src/
flavor1/google-services.json
flavor2/google-services.json
Version 3.0.0 of the plugin searches for the JSON file in these locations (considering you have a flavor
flavor1 and a build type debug
):
/app/src/debug/google-services.json
/app/src/debug/flavor1/google-services.json
/app/google-services.json
This worked for me even using flavorDimensions. I have free & paid in one dimension and Mock & Prod in the other dimension. I also have 3 buildTypes: debug, release, and staging. This is how it looks in my project for the FreeProd flavor:
How many google-services.json files will depend on your project's characteristics, but you will need at least one JSON file for every Google project.
If you want more details about what this plugin does with these JSON files, here it is: https://github.com/googlesamples/google-services/issues/54#issuecomment-165824720
Link to the official docs: https://developers.google.com/android/guides/google-services-plugin
Blog post with updated info: https://firebase.googleblog.com/2016/08/organizing-your-firebase-enabled-android-app-builds.html
And go here to check the latest version of this plugin: https://mvnrepository.com/artifact/com.google.gms/google-services?repo=google
Answered By - Yair Kukielka