Qu'est-ce que google-services.json le fait vraiment?

je travaille à ajouter les services Google Analytics et GCM à mon application actuelle. Sur le guide pour la mise en œuvre des deux services, google demande aux développeurs de générer un fichier json: google-services.json et le mettre sous répertoire racine de l'application.

j'ai trouvé que même si je supprime ce fichier json de mon application, les services fonctionnent toujours.

Je veux juste savoir pour être sûr, à quoi sert vraiment ce fichier? Ce que son utilisation et comment ça fonctionne?

109
demandé sur Janusz 2015-07-24 00:00:22

3 réponses

j'ai un peu enquêté sur le plugin google-services et json et j'ai trouvé les sources de ce plugin.

tout d'Abord

le Grad-plugin google-services qui est référencé par classpath et avec apply est un plugin de construction seulement! Ainsi, il n'influence que le processus de construction de votre application, mais pas le processus d'exécution!

ce plugin se veut seulement un quickstart-helper pour intégrer Google-services rapidement dans votre application. Évidemment, le processus est quelque peu alambiqué et non documenté, de sorte que Google aurait dû indiquer clairement ce que ce processus fait.

en fait, j'ai trouvé le code source pour la version plugin com.Google.GMS:google-services: 1.4.0-beta3 et n'y ont trouvé aucune référence spécifique concernant appinvites ni aucune API Google pour App Invites! (Mais peut-être qu'il utilise juste un projet D'API générique avec son ID de projet, je n'ai pas essayé cela)

Ce qu'il fait

le Grad-plugin google-services cherche les google-services mentionnés.fichier json dans votre application-module. Ensuite, il recherche les paramètres configurés tels que project-id et tracking-id, générés par la console de développement de L'API Google dans les services google.fichier 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 un debug-build de votre application:

app/build/generated/res/google-services/debug/values/values.xml

E. G. si vous avez suivi le tutoriel GCM, le fichier JSON inclurait l'id du projet API comme la ressource android suivante:

<string name="gcm_defaultSenderId">project-id</string>

donc ce plugin et le fichier JSON ne sont pas essentiels à l'exécution ou à la publication de votre application, il est juste un helper quickstart pour générer quelques fichiers de base android-ressources pour une intégration plus facile de fonctionnalités spécifiques de L'API Google.

avis dans le code source mentionné ci-dessous que le google-services plugin génère toujours ces ressources android pour chaque application-variante qui est défini dans votre application/Construire.gradle.

si vous ne voulez pas cela, vous devriez utiliser les ressources générées dans les variantes d'applications que vous voulez, et supprimer les autres. N'oubliez pas de supprimer le plugin google-services apply from app/build.grader, ou bien il sera régénéré pour toutes les variantes d'applications.

Ce qui n'est pas

ce plugin et JSON-file n'influencent pas directement le fonctionnement interne de ce Google-features pour votre application! Si vous avez déjà suivi des developer.android.com sur la façon d'intégrer par exemple GCM ou Google Analytics, alors vous n'avez même pas besoin d'intégrer soit le Grad-plugin google-services ou les google-services.fichier json!

Avis sur l'endroit où j'ai trouvé les sources

après que vous avez intégré le Google-services gradle-plugin et quand synchroniser votre project, Grad e télécharge automatiquement la dépendance de google-services vers un chemin similaire à celui-ci (sur Windows, vous pourriez avoir besoin de regarder dans votre maison/.Grad le pour Linux):

C:\Users\user\.gradle\caches\modules-2\files-2.1\com.google.gms\google-services.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 simple du Grad-plugin.

GoogleServicesPlugin.groovy

contient la manipulation des app-variantes et des définitions de base des chemins etc.

GoogleServicesTask.java

contient la définition de la tâche réelle, cherchez la méthode suivante pour voir ce qu'elle fait vraiment:

@TaskAction
public void action() throws IOException { 
181
répondu arne.jans 2016-03-01 09:54:22

à quoi sert réellement ce fichier:

google-services.json contient les identifiants du développeur et les paramètres de configuration, qui sont nécessaires pour vérifier lors de la connexion avec GoogleApiClient. Bien que votre service fonctionne bien 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. Afin de ne pas le supprimer.

la Documentation officielle dit:

l'application construit un GoogleApiClient, en précisant les portées et les API auxquelles l'application aura accès. Lorsque GoogleApiClient se connecte, l'utilisateur est connecté.

voir la section comment ça marche .

36
répondu Mohammad Arman 2015-12-21 20:09:59

Ajouter google-services.json à votre module et faire un nettoyage et une reconstruction. Un fichier xml sera généré dans app/construire/generated/res/google-services/debug/valeurs/valeurs.xml avec vos propriétés de projet et vous pouvez facilement accéder alors comme la chaîne xml normale. Exemple:

String serverClientId = getString(R.string.default_web_client_id);

Il ya une liste avec toutes les chaînes et des informations momre dans google-service.JSON doc

2
répondu Beto Caldas 2017-01-09 19:01:07