J'ai étudié un peu le plugin google-services et json et j'ai trouvé les sources de ce plugin.
Tout d'abord
Le google-services gradle-plugin qui est référencé par classpath et avec apply est un plugin de construction uniquement! Cela n'influence donc que le processus de construction de votre application, mais pas le processus d'exécution!
Ce plugin est uniquement conçu comme une aide au démarrage rapide pour intégrer rapidement les services Google dans votre application. De toute évidence, le processus est quelque peu compliqué et non documenté, donc Google aurait dû expliquer clairement ce que fait ce processus.
En fait, j'ai trouvé le code source de la version du plugin com.google.gms: google-services: 1.4.0-beta3 et je n'y ai trouvé aucune référence spécifique concernant les invitations d'applications et je n'ai trouvé aucune API Google pour les invitations d'application! (Mais peut-être qu'il utilise juste un projet d'API générique avec son identifiant de projet, je n'ai pas essayé cela)
Ce qu'il fait
Le plugin gradle google-services recherche le fichier google-services.json mentionné dans votre module d'application. Ensuite, il recherche les paramètres configurés tels que les ID de projet et de suivi, etc., générés par la console de développement de l'API Google dans le fichier google-services.json. À partir des paramètres trouvés, les valeurs des ressources Android sont générées dans le chemin suivant:
$project.buildDir/generated/res/google-services/$variant.dirName/values/values.xml
Par exemple, pour une version de débogage de votre application:
app/build/generated/res/google-services/debug/values/values.xml
Par exemple, si vous avez suivi le didacticiel GCM, le fichier JSON inclurait l'ID du projet d'API en tant que ressource android suivante:
<string name="gcm_defaultSenderId">project-id</string>
Ainsi, ce plugin et ce fichier JSON ne sont pas essentiels pour exécuter ou publier votre application, il s'agit simplement d'un assistant de démarrage rapide pour générer des fichiers de ressources Android de base pour une intégration plus facile des fonctionnalités spécifiques de l'API Google.
Notez dans le code source référencé ci-dessous que le plugin google-services génère toujours ces ressources android pour chaque variante d'application définie dans votre app / build.gradle.
Si vous ne le souhaitez pas, vous devez utiliser ces ressources générées dans les variantes d'application souhaitées et supprimer les autres. N'oubliez pas de supprimer le plugin google-services apply de app / build.gradle, sinon il sera régénéré pour toutes les variantes d'application.
Ce que ça ne fait pas
Ce plugin et ce fichier JSON n'influencent PAS directement le fonctionnement interne desdites fonctionnalités Google pour votre application! Si vous avez déjà suivi d'anciens tutoriels sur developer.android.com sur la façon d'intégrer par exemple GCM ou Google Analytics, vous n'avez même pas besoin d'intégrer le fichier google-services gradle-plugin ou le fichier google-services.json!
Remarquez où j'ai trouvé les sources
Après avoir intégré le plugin google-services gradle-plugin et lors de la synchronisation de votre projet, Gradle télécharge automatiquement la dépendance google-services vers un chemin similaire à celui-ci (sous Windows, vous devrez peut-être regarder dans votre home / .gradle pour Linux):
C:\Users\user\.gradle\caches\modules-2\files-2.1\com.google.gms\google-services\1.4.0-beta3\f1580f62e3be313eba041ce19b64fd3f44cf8951\google-services-1.4.0-beta3-sources.jar
Si vous extrayez ce fichier jar, vous trouverez deux fichiers:
GoogleServicesPlugin.groovy
GoogleServicesTask.java
qui contiennent le code source brut du plugin gradle.
GoogleServicesPlugin.groovy
contient la gestion des variantes d'application et des définitions de base des chemins, etc.
GoogleServicesTask.java
contient la définition de tâche réelle, recherchez la méthode suivante pour voir ce qu'elle fait vraiment:
@TaskAction
public void action() throws IOException {