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

Pour ajouter 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 plug-in Gradle et le fichier de configuration JSON à votre projet. Toutefois, si vous utilisez Firebase Assistant for Android Studio, ces tâches sont effectuées automatiquement 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 remplit deux fonctions principales :

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

  • Ajoute des dépendances pour les 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 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). Depuis la version 2.2.0, le plug-in est compatible avec les fichiers JSON spécifiques au type de compilation et à la variante de produit. Toutes les structures de répertoires 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é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
    ...

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, il renvoie l'objet membre.

  • 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 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. 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 indiqué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 les fichiers XML manuellement en toute sécurité à l'aide de 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.

Après avoir téléchargé le fichier de configuration google-services.json, 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 tels que 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. En cas de doute, suivez à nouveau la procédure de démarrage et obtenez un nouveau fichier JSON.