Plug-in Gradle des services Google et fichier de configuration JSON

Lorsque vous ajoutez Firebase à votre projet Android, vous devez ajouter le plug-in Gradle google-services et un fichier de configuration google-services.json à votre projet.

Si vous ajoutez Firebase à votre projet Android à l'aide de la console Firebase, de l'API REST Management ou de la CLI Firebase, vous devez ajouter manuellement le fichier de configuration JSON et le plug-in Gradle à votre projet. Toutefois, si vous utilisez Firebase Assistant for Android Studio, ces tâches sont effectuées automatiquement pour vous lors de la configuration.

Ajouter le plug-in Gradle

Ajoutez le plug-in Gradle des services Google (google-services) à votre fichier build.gradle :

dependencies {
    classpath 'com.google.gms:google-services:4.5.0'
    // ...
}

Le plug-in Gradle des services Google a deux fonctions principales :

  • Traite le fichier de configuration google-services.json et génère des ressources Android pouvant être utilisées dans le code de votre application.

  • Ajoute les dépendances pour les bibliothèques de base requises pour les services que vous avez activés. Cette étape nécessite que vous appliquiez 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 de configuration JSON

Le fichier de configuration 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 à la variante du 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
    ...

Lorsque des variantes de produit sont utilisées, ces structures de répertoire 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
    ...

Traitement du fichier de configuration JSON

Le fichier de configuration google-services.json présente la structure de base 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 de votre application Android, le plug-in n'utilise que l'objet client qui correspond au nom de votre package (pour le type de compilation actuel) en fonction de la logique suivante :

  • Pour chaque membre du tableau client, le plug-in vérifie la valeur de client_info/android_client_info/package_name. Si le nom du package correspond à cette valeur, l'objet membre est renvoyé.

  • Si aucun des membres de client ne correspond au nom du package, le plug-in génère une exception.

Le reste de ce document utilise YOUR_CLIENT pour faire référence au membre du tableau client déterminé par la logique décrite ci-dessus.

Production de fichiers XML

Le principal résultat du traitement JSON est la production de deux fichiers XML que vous pouvez référencer en tant que ressources Android dans votre code. Voici des exemples de 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>
    

Valeurs dans les fichiers XML

Chaque valeur des fichiers XML est présente dans le fichier de configuration google-services.json aux emplacements listés ci-dessous. Si votre projet Android comporte une configuration qui vous empêche d'utiliser le plug-in Gradle google-services, vous pouvez recréer manuellement les fichiers XML en utilisant ces valeurs.

  • 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

Lors de la compilation, le message d'erreur suivant s'affiche : File google-services.json is missing from module root folder. The Google Services Plugin cannot function without it.

La console Firebase vous aidera à télécharger le fichier de configuration google-services.json.

Une fois le fichier de configuration 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.

Je ne trouve pas les symboles R.string.gcm_defaultSenderId ou R.xml.global_tracker.

Assurez-vous que le nom du package dans votre fichier build.gradle correspond à celui que vous avez saisi lors de la création du fichier google-services.json. Si vous n'êtes pas sûr, recommencez le processus de démarrage et obtenez un nouveau fichier JSON.