Получайте понятные отчеты о сбоях на панели управления Crashlytics (Android)

Выберите платформу: iOS+ Android Flutter Unity


Плагин Crashlytics для Gradle может автоматически определять, когда вы обфусцируете свой код. Когда ваша сборка генерирует файл сопоставления, плагин загружает его, чтобы серверы Crashlytics могли использовать этот файл для преобразования трассировок стека вашего приложения в необфусцированный и удобочитаемый код.

Необходимая конфигурация при использовании R8, ProGuard и DexGuard

Crashlytics может деобфусцировать данные с помощью любого файла сопоставления, совместимого с ProGuard, и дополнительно был протестирован с ProGuard, R8 и DexGuard.

Если ваше приложение использует R8 с включенной обфускацией, а также Android Gradle 4.2.0+, Crashlytics будет создавать читаемые отчеты о сбоях. Обратите внимание, что Crashlytics недавно улучшил поддержку приложений, использующих как Kotlin, так и R8, что может привести к некоторым неожиданным меткам проблем .

Если ваше приложение использует конфигурационный файл ProGuard, вам необходимо сохранить информацию, необходимую Crashlytics для создания читаемых отчетов о сбоях. Для этого добавьте следующие строки в конфигурационный файл ProGuard или DexGuard:

-keepattributes SourceFile,LineNumberTable        # Keep file names and line numbers.
-keep public class * extends java.lang.Exception  # Optional: Keep custom exceptions.

Для получения помощи по вопросам или проблемам, связанным с DexGuard, обратитесь напрямую в службу поддержки Guardsquare . Для получения помощи по ProGuard посетите форумы сообщества Guardsquare , где вы сможете получить консультацию эксперта.

Сохраняйте обфусцированные варианты сборки.

To prevent the Crashlytics Gradle plugin from uploading the mapping file for variants that use obfuscation, set the firebaseCrashlytics.mappingFileUploadEnabled Gradle extension property to false in your module (app-level) Gradle file (usually <project>/<app-module>/build.gradle.kts or <project>/<app-module>/build.gradle ). This can help speed up build times for obfuscated builds, but note that resulting stack traces will appear obfuscated in the Crashlytics page of the Firebase console.

Kotlin

import com.google.firebase.crashlytics.buildtools.gradle.CrashlyticsExtension

// ...

android {

// To enable Crashlytics mapping file upload for specific build types:
buildTypes {
  getByName("debug") {
    minifyEnabled = true
    configure<CrashlyticsExtension> {
      mappingFileUploadEnabled = false
    }
  }
}

...

// To enable Crashlytics mapping file upload for specific product flavors:
flavorDimensions += "environment"
productFlavors {
  create("staging") {
    dimension = "environment"
    ...
    configure<CrashlyticsExtension> {
      mappingFileUploadEnabled = false
    }
  }
  create("prod") {
    dimension = "environment"
    ...
    configure<CrashlyticsExtension> {
      mappingFileUploadEnabled = true
    }
  }
}
}

Groovy

android {

// To enable Crashlytics mapping file upload for specific build types:
buildTypes {
  debug {
    minifyEnabled true
    firebaseCrashlytics {
      mappingFileUploadEnabled false
    }
  }
}

...

// To enable Crashlytics mapping file upload for specific product flavors:
flavorDimensions "environment"
productFlavors {
  staging {
    dimension "environment"
    ...
    firebaseCrashlytics {
      mappingFileUploadEnabled false
    }
  }
  prod {
    dimension "environment"
    ...
    firebaseCrashlytics {
      mappingFileUploadEnabled true
    }
  }
}
}