Use external google-services.json file in library

2020-06-16 09:52发布

问题:

I'm sharing a single login module across my apps, with a LoginActivity that handles both Facebook and Google auth (logic + UI).
Now, with Facebook it's easy to specify a different ID for each app, overriding the library's facebook_app_id string in the app module.

I didn't find a way to do the same with Google Sign-In because it requires a google-services.json file. In fact, the build fails if I include the file in the app modules and not in the login library.

Error:Execution failed for task ':core:processReleaseGoogleServices'.
File google-services.json is missing. The Google Services Plugin cannot function without it.

The error is self-explanatory, I need google-services.json in the login module. The point is that the other apps have their own google-services.json too.

Is there a way I can add a dummy google-services.json in the Login module and then override it in each app with the real one?

回答1:

You can't have a google-services.json file in a library. You have to add the dependencies needed, and it is enough to compile to library.

Instead in the projects which will use the library, you have to add the plugin and the google-services.json file.

To do it in your library, in the build.gradle you have to remove the line

//apply plugin: 'com.google.gms.google-services'