Firebase Crashlytics ist ein leistungsstarkes Echtzeit-Tool zur Erfassung von Abstürzen, mit dem Sie Stabilitätsprobleme in Ihrer App ganz einfach beheben können. Crashlytics spart Ihnen Zeit bei der Fehlerbehebung, da Abstürze intelligent gruppiert und die Umstände, die zu ihnen geführt haben, hervorgehoben werden.
In dieser Anleitung wird beschrieben, wie Sie Crashlytics in Ihr Android Studio-Projekt einbinden, damit Sie Anzeigenantwort-IDs erfassen können. Wenn Sie später Probleme mit Abstürzen in Ihrer App beheben, können Sie die Anzeigenantwort-ID in AdMob im Überprüfungszentrum für Anzeigen suchen und die Anzeigen blockieren.
Schritt 1:Firebase einer Android-Anwendung hinzufügen
Wenn Sie die Protokollierung mit Firebase in einer leeren App ausprobieren möchten, können Sie die Beispiele für das Google Mobile Ads SDK für Android aus dem Repository auf GitHub herunterladen oder klonen. In diesem Leitfaden wird das-Bannerbeispiel verwendet.
Wenn Sie bereits eine App haben, sollten Sie mit dem Paketnamen Ihrer App mit den nächsten Schritten fortfahren können. Dieselben Schritte können mit geringfügigen Anpassungen auch auf andere Beispiele im Repository angewendet werden.
Wenn Sie Firebase Crashlytics verwenden möchten, müssen Sie ein Firebase-Projekt erstellen und Ihre App hinzufügen. Erstellen Sie ein Firebase-Projekt, falls noch nicht geschehen. Registrieren Sie Ihre App.
Klicken Sie auf der Crashlytics-Seite der Firebase Console auf Crashlytics einrichten.
Klicken Sie auf dem angezeigten Bildschirm auf Nein > Neue Firebase App einrichten.
Fügen Sie in „build.gradle“ die Abhängigkeiten für Google Analytics, Fabric und Crashlytics hinzu.
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() // ... } }
Erstellen und führen Sie Ihre App aus, um sicherzustellen, dass Crashlytics richtig konfiguriert ist. Danach können Sie auf das Crashlytics-Dashboard zugreifen.
Optional: Einrichtung testen
Wenn Sie eine Schaltfläche zum Erzwingen eines Absturzes hinzufügen, können Sie einen Absturz erzwingen, der bei jeder Betätigung der Schaltfläche einen App-Absturz verursacht.
Hier ein Beispiel, wie Sie eine Schaltfläche für Abstürze in der onCreate()
-Methode einer Activity
hinzufügen:
MainActivity (Auszug)
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 AdRequest.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(AdRequest.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)) }
Erstellen Sie Ihre App in Android Studio und führen Sie sie auf einem Emulator oder einem verbundenen Gerät aus. Nachdem die App geladen wurde, können Sie auf die Schaltfläche Absturz klicken. Starten Sie die App noch einmal über das Gerät oder Android Studio, damit das Absturzprotokoll in Crashlytics hochgeladen werden kann.
Schritt 2:Anzeigenantwort-ID erfassen
Wenn Sie mehrere Anzeigen laden und zu unterschiedlichen Zeiten ausliefern, sollten Sie für jede Anzeigenantwort-ID einen separaten Schlüssel erfassen. In diesem Leitfaden wird beispielsweise ein Beispiel mit nur einer Banneranzeige verwendet. Daher loggen wir die Anzeigenantwort-ID im folgenden Snippet als Schlüssel banner_ad_response_id
. In Firebase Crashlytics können Sie mehrere benutzerdefinierte Schlüssel / Wert-Paare für verschiedene Anzeigentypen und Anzeigenereignisse erstellen. Weitere Informationen zum Lebenszyklus von Anzeigen finden Sie unter AdListener
. Weitere Informationen zur benutzerdefinierten Protokollierung finden Sie unter Firebase Crashlytics-Absturzberichte anpassen.
Fügen Sie MyActivity.java
den folgenden Code hinzu. Im Wesentlichen wird die Funktion FirebaseCrashlytics.setCustomKey()
in der onAdLoaded()
-Callback-Funktion verwendet, um sicherzustellen, dass die Anzeige geladen wurde, bevor versucht wird, getResponseInfo()
aufzurufen.
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 AdRequest.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(AdRequest.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)) }
Glückwunsch! Die neueste banner_ad_response_id
wird jetzt im Bereich „Schlüssel“ der Absturzsitzungen auf Ihrem Crashlytics-Dashboard angezeigt. Es kann bis zu einer Stunde dauern, bis einige Schlüssel im Dashboard angezeigt werden.