Introduction
Dans le cadre de l'activation des API Google ou des services Firebase dans votre application Android, vous devrez peut-être ajouter le plug-in google-services
à votre fichier build.gradle
:
dependencies {
classpath 'com.google.gms:google-services:4.3.15'
// ...
}
Le plug-in google-services
a deux fonctions principales:
- Traitez le fichier
google-services.json
et produisez des ressources Android pouvant être utilisées dans le code de votre application. Pour en savoir plus, consultez Ajouter le fichier JSON. Ajoutez les dépendances des bibliothèques de base requises pour les services que vous avez activés. Pour cette étape, vous devez appliquer le plug-in Gradle des services Google dans votre fichier
app/build.gradle
, comme suit:
apply plugin: 'com.google.gms.google-services'
Vous pouvez voir le résultat de cette étape en exécutant
./gradlew :app:dependencies
.
Ajouter le fichier JSON
Le fichier google-services.json
est généralement placé dans le répertoire app/
(à la racine du module d'application Android Studio). À partir de la version 2.2.0
, le plug-in est compatible avec les fichiers JSON spécifiques au type de compilation et au type de produit. Toutes les structures de répertoire suivantes sont valides:
// dogfood and release are build types. app/ google-services.json src/dogfood/google-services.json src/release/google-services.json ...
Remarque:En fournissant un fichier google-services.json dans le répertoire des versions, vous pouvez conserver un projet Firebase distinct pour vos fichiers APK de production.
Lorsque les types de produit sont utilisés, ces structures de répertoires plus complexes sont également valides.
// free and paid are product flavors. app/ google-services.json src/dogfood/paid/google-services.json src/release/free/google-services.json ...
Traiter le fichier JSON
La structure de base du fichier google-services.json
est la suivante:
{ "project_info": {...}, "client": [...], }
L'objet project_info
contient des informations générales sur votre projet, tandis que chaque membre du tableau client
contient des informations sur les clients (applications Android) que vous avez ajoutés au projet.
Lors du traitement du fichier JSON pour votre application Android, le plug-in n'utilise que l'objet client
qui correspond au nom du package (pour le type de compilation actuel) en fonction de la logique suivante:
- Pour chaque membre du tableau
client
:- Vérifiez la valeur de
client_info/android_client_info/package_name
- Si le nom du package correspond à cette valeur, renvoyez l'objet membre.
- Vérifiez la valeur de
- Si aucun des membres de
client
ne correspond au nom du package, une exception est levée.
Dans la suite de ce document, nous utiliserons {YOUR_CLIENT}
pour désigner le membre du tableau client
déterminé par la procédure ci-dessus.
Le résultat principal du traitement JSON est de produire deux fichiers XML que vous pouvez référencer en tant que ressources Android dans votre code Java. Voici un exemple pour chaque fichier:
app/build/generated/res/google-services/{build_type}/values/values.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <! -- Present in all applications --> <string name="google_app_id" translatable="false">1:1035469437089:android:73a4fb8297b2cd4f</string> <! -- Present in applications with the appropriate services configured --> <string name="gcm_defaultSenderId" translatable="false">1035469437089</string> <string name="default_web_client_id" translatable="false">337894902146-e4uksm38sne0bqrj6uvkbo4oiu4hvigl.apps.googleusercontent.com</string> <string name="ga_trackingId" translatable="false">UA-65557217-3</string> <string name="firebase_database_url" translatable="false">https://example-url.firebaseio.com</string> <string name="google_api_key" translatable="false">AIzbSyCILMsOuUKwN3qhtxrPq7FFemDJUAXTyZ8</string> <string name="google_crash_reporting_api_key" translatable="false">AIzbSyCILMsOuUKwN3qhtxrPq7FFemDJUAXTyZ8</string> <string name="project_id" translatable="false">mydemoapp</string> </resources>
app/build/generated/res/google-services/{flavor}/{build_type}/xml/global_tracker.xml.
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="ga_trackingId" translatable="false">UA-65557218-3</string> </resources>
Toutes les valeurs des fichiers XML sont présentes dans le fichier google-services.json
aux emplacements ci-dessous. Si votre projet Android comporte une configuration qui vous empêche d'utiliser le plug-in google-services
, vous pouvez recréer les fichiers XML manuellement en toute sécurité à l'aide des valeurs suivantes:
google_app_id:
{YOUR_CLIENT}/client_info/mobilesdk_app_id
gcm_defaultSenderId:
project_info/project_number
default_web_client_id:
{YOUR_CLIENT}/oauth_client/client_id (client_type == 3)
ga_trackingId:
{YOUR_CLIENT}/services/analytics-service/analytics_property/tracking_id
firebase_database_url:
project_info/firebase_url
google_api_key:
{YOUR_CLIENT}/api_key/current_key
google_crash_reporting_api_key:
{YOUR_CLIENT}/api_key/current_key
project_id:
project_info/project_id
Dépannage
Q: Lorsque je crée le fichier, j'obtiens le message d'erreur suivant: "File google-services.json is missing from module module root folder" (Fichier google-services.json manquant dans le dossier racine du module). sans quoi le plug-in de services Google ne pourrait pas fonctionner."
Réponse: La console Firebase vous aidera à télécharger google-services.json
.
En outre, les guides de démarrage rapide de la plupart des API contiennent des instructions pour générer ce fichier.
Une fois le fichier google-services.json
téléchargé, copiez-le dans le dossier app/
de votre projet Android Studio ou dans le dossier app/src/{build_type}
si vous utilisez plusieurs types de compilation.
Q: Je ne trouve pas le symbole "R.string.gcm_defaultSenderId", "R.xml.global_tracker", etc.
R: Assurez-vous que le nom du package dans votre fichier build.gradle
correspond au nom que vous avez saisi lors de la création du fichier google-services.json
. En cas de doute, exécutez à nouveau la procédure de démarrage et obtenez un nouveau fichier JSON.