Firebase Crashlytics – это простой инструмент, который предоставляет отчеты о сбоях в режиме реального времени и помогает вам управлять проблемами со стабильностью в приложении. Crashlytics экономит ваше время, автоматически группируя сбои и выделяя обстоятельства, которые к ним привели.
В этом руководстве рассказывается, как интегрировать Crashlytics в проект Android Studio, чтобы регистрировать идентификаторы ответов объявлений. Позже, когда вы будете устранять неполадки с приложением, вы сможете найти и заблокировать объявления по идентификатору ответа объявления в Центре проверки объявлений Менеджера рекламы.
Шаг 1. Добавьте Firebase в приложение для Android
Если вы хотите попробовать войти в аккаунт с помощью Firebase в новом приложении, скачайте или клонируйте Google Mobile Ads SDK (Legacy)примеры для Android из репозитория на GitHub. В этом руководстве используется пример Banner Example.
Если у вас уже есть приложение, вы можете перейти к другим шагам, используя название пакета этого приложения. Те же действия можно применить к другим примерам в репозитории, внеся небольшие изменения.
Чтобы использовать Firebase Crashlytics, необходимо создать проект Firebase и добавить в него приложение. Если вы ещё этого не сделали, создайте проект Firebase. Не забудьте зарегистрировать в нем свое приложение.
На странице Crashlytics в консоли Firebase нажмите Настроить Crashlytics.
На появившемся экране нажмите Нет > Настроить новое приложение Firebase.

В файле build.gradle добавьте зависимости для Google Аналитики, Fabric и 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 Google Mobile Ads SDK (Legacy) implementation 'com.google.android.gms:play-services-ads:25.5.0' // Add the Firebase Crashlytics dependency. implementation 'com.google.firebase:firebase-crashlytics:21.0.0' }
project/build.gradle
buildscript { repositories { // ... // Add Google's Maven repository. google() } dependencies { // ... classpath 'com.google.gms:google-services:4.5.0' // Add the Fabric Crashlytics plugin. classpath 'com.google.firebase:firebase-crashlytics-gradle:3.0.8' } } allprojects { // ... repositories { // Check that Google's Maven repository is included (if not, add it). google() // ... } }Создайте и запустите приложение, чтобы убедиться, что Crashlytics настроен правильно. После этого вы сможете перейти на панель управления Crashlytics.

Как проверить настройки(необязательно)
Добавив кнопку сбоя, вы сможете при каждом нажатии вызывать сбой приложения.
Ниже приведен пример того, как добавить кнопку сбоя в метод onCreate() класса Activity:
MainActivity (фрагмент)
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)) }
Создайте и запустите приложение в Android Studio на эмуляторе или подключенном устройстве. После загрузки приложения нажмите кнопку Сбой. Перезапустите приложение на устройстве или в Android Studio, чтобы журнал сбоев был загружен в Crashlytics.
Шаг 2. Зарегистрируйте идентификатор ответа объявления
Если вы загружаете несколько объявлений и показываете их в разное время, рекомендуем регистрировать идентификатор ответа на запрос объявления с помощью отдельного ключа. Например, в этом руководстве используется пример с одним баннером. Поэтому мы регистрируем идентификатор ответа объявления как ключ banner_ad_response_id в следующем фрагменте кода. В Firebase Crashlytics можно создать несколько пар "ключ-значение" для разных типов объявлений и событий, связанных с ними (см. AdListener о жизненном цикле объявлений). Подробнее о ведении журнала пользовательских данных рассказывается в статье Как настроить отчеты о сбоях Firebase Crashlytics.
Добавьте в файл MyActivity.java следующий код: По сути, в функции обратного вызова onAdLoaded() используется функция FirebaseCrashlytics.setCustomKey(), чтобы убедиться, что объявление загружено, прежде чем пытаться вызвать 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)) }
Поздравляем! Теперь на панели управления Crashlytics в ключевом разделе сеансов сбоев будет показываться последнее значение banner_ad_response_id. Обратите внимание, что некоторые ключи могут появиться на панели управления в течение часа.
