Firebase Crashlytics est un outil de création de rapports d'erreur léger et en temps réel qui vous permet de gérer facilement les problèmes de stabilité dans votre application. Crashlytics vous fait gagner du temps en regroupant intelligemment les plantages et en mettant en évidence les circonstances qui les ont précédés.
Ce guide explique comment intégrer Crashlytics à votre projet Android Studio afin de pouvoir consigner les ID de réponse des annonces. Plus tard, lorsque vous résoudrez les plantages de votre application, vous pouvez rechercher l'ID de réponse de l'annonce et utiliser le centre de vérification des annonces dans Ad Manager pour rechercher et bloquer les annonces.
Étape 1:Ajouter Firebase à une application Android
Si vous souhaitez essayer de vous connecter avec Firebase à partir d'une application propre, vous pouvez télécharger ou cloner les exemples de SDK Google Mobile Ads pour le dépôt Android sur GitHub. Ce guide utilise spécifiquement l'exemple de bannière Exemple de bannière.
Si vous avez déjà une application, vous devriez pouvoir passer aux autres étapes avec le nom de package de votre application. La même procédure peut également être appliquée à d'autres exemples du dépôt avec des adaptations mineures.
Pour utiliser Firebase Crashlytics, vous devez créer un projet Firebase et y ajouter votre application. Si ce n'est pas déjà fait, créez un projet Firebase. Veillez à enregistrer votre application auprès de celui-ci.
Sur la page Crashlytics de la console Firebase, cliquez sur Configurer Crashlytics.
Dans l'écran qui s'affiche, cliquez sur Non > Configurer une nouvelle application Firebase.
Dans votre fichier build.gradle, ajoutez les dépendances pour Google Analytics, Fabric et Crashlytics.
app/build.gradle
apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' // Add the Fabric plugin apply plugin: 'io.fabric' dependencies { // ... // Add the Google Mobile Ads SDK implementation 'com.google.android.gms:play-services-ads:23.5.0' // Add the Firebase Crashlytics dependency. implementation 'com.google.firebase:firebase-crashlytics:19.2.1' }
project/build.gradle
buildscript { repositories { // ... // Add Google's Maven repository. google() } dependencies { // ... classpath 'com.google.gms:google-services:4.4.2' // Add the Fabric Crashlytics plugin. classpath 'com.google.firebase:firebase-crashlytics-gradle:3.0.2' } } allprojects { // ... repositories { // Check that Google's Maven repository is included (if not, add it). google() // ... } }
Créez et exécutez votre application pour vous assurer que Crashlytics est correctement configuré. Une fois l'opération réussie, vous pourrez accéder au tableau de bord Crashlytics.
(Facultatif) Tester votre configuration
En ajoutant un bouton de plantage, vous pouvez forcer un plantage de l'application à chaque pression sur le bouton.
Voici un exemple illustrant comment ajouter un bouton de plantage dans la méthode onCreate()
d'un Activity
:
MainActivity (extrait)
Java
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); // Gets the ad view defined in layout/ad_fragment.xml with ad unit ID set in // values/strings.xml. adView = findViewById(R.id.ad_view); // Start loading the ad in the background. adView.loadAd(new AdManagerAdRequest.Builder().build()); // Add a crash button. Button crashButton = new Button(this); crashButton.setText("Crash!"); crashButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { throw new RuntimeException("Test Crash"); // Force a crash } }); addContentView(crashButton, new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); }
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_my) // Gets the ad view defined in layout/ad_fragment.xml with ad unit ID set in // values/strings.xml. adView = findViewById(R.id.ad_view) // Start loading the ad in the background. adView.loadAd(AdManagerAdRequest.Builder().build()) // Add a crash button. val crashButton = Button(this) crashButton.text = "Crash!" crashButton.setOnClickListener { throw RuntimeException("Test Crash") // Force a crash } addContentView(crashButton, ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)) }
Dans Android Studio, créez et exécutez votre application sur un émulateur ou un appareil connecté. Une fois l'application chargée, vous pouvez cliquer sur le bouton Plantage. Redémarrez l'application depuis l'appareil ou Android Studio pour que le journal des plantages soit importé dans Crashlytics.
Étape 2:Enregistrez l'ID de réponse d'annonce
Si vous chargez plusieurs annonces et les affichez à des moments différents, il est conseillé de consigner chaque ID de réponse d'annonce avec une clé distincte. Par exemple, ce guide utilise un exemple qui ne comporte qu'une seule bannière publicitaire. Par conséquent, nous enregistrons l'ID de réponse de l'annonce en tant que clé banner_ad_response_id
dans l'extrait de code suivant. En effet, vous pouvez créer plusieurs paires clé / valeur personnalisées dans Firebase Crashlytics pour différents types et événements d'annonces (voir AdListener
pour le cycle de vie des annonces). Pour en savoir plus sur la journalisation personnalisée, consultez Personnaliser vos rapports d'erreur Firebase Crashlytics.
Ajoutez le code suivant à votre MyActivity.java
. En substance, il utilise la fonction FirebaseCrashlytics.setCustomKey()
dans la fonction de rappel onAdLoaded()
pour s'assurer que l'annonce a été chargée avant d'essayer d'appeler getResponseInfo()
.
Java
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); // Gets the ad view defined in layout/ad_fragment.xml with ad unit ID set in // values/strings.xml. adView = findViewById(R.id.ad_view); adView.setAdListener(new AdListener() { @Override public void onAdLoaded() { String adResponseId = adView.getResponseInfo().getResponseId(); FirebaseCrashlytics.getInstance().setCustomKey( "banner_ad_response_id", adResponseId); } }); // Start loading the ad in the background. adView.loadAd(new AdManagerAdRequest.Builder().build()); // Add a crash button. Button crashButton = new Button(this); crashButton.setText("Crash!"); crashButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { throw new RuntimeException("Test Crash"); // Force a crash } }); addContentView(crashButton, new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); }
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_my) // Gets the ad view defined in layout/ad_fragment.xml with ad unit ID set in // values/strings.xml. adView = findViewById(R.id.ad_view) adView.adListener = object : AdListener() { override fun onAdLoaded() { mAdView.responseInfo?.responseId?.let { adResponseId -> FirebaseCrashlytics.getInstance().setCustomKey( "banner_ad_response_id", adResponseId) } } } // Start loading the ad in the background. adView.loadAd(AdManagerAdRequest.Builder().build()) // Add a crash button. val crashButton = Button(this) crashButton.text = "Crash!" crashButton.setOnClickListener { throw RuntimeException("Test Crash") // Force a crash } addContentView(crashButton, ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)) }
Félicitations ! Vous verrez désormais la banner_ad_response_id
la plus récente dans la section des clés des sessions de plantage de votre tableau de bord Crashlytics. Notez que l'affichage de certaines clés dans votre tableau de bord peut prendre jusqu'à une heure.