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 {
A quoi sert vraiment ce fichier:
google-services.json contient les informations d'identification du développeur et les paramètres de configuration, qui sont nécessaires pour la vérification lors de la connexion à GoogleApiClient. Bien que votre service fonctionne correctement avec votre appareil de test, car il détecte votre compte de développeur, mais après avoir publié votre application en public, il ne fonctionnera pas sans le fichier json. Alors ne le supprimez pas.
La documentation officielle dit:
L'application crée un GoogleApiClient, spécifiant les étendues et les API auxquelles l'application accédera. Lorsque GoogleApiClient se connecte, l'utilisateur est connecté.
Voir la section comment ça marche .
la source
Ajoutez google-services.json à votre module et effectuez un nettoyage et une reconstruction. Un fichier xml sera généré dans app / build / generated / res / google-services / debug / values / values.xml avec les propriétés de votre projet et vous pouvez facilement y accéder comme une chaîne xml normale. Exemple:
il y a une liste avec toutes les chaînes et plus d'informations dans google-service.json doc
la source