Obtén informes de fallas legibles en el panel de Crashlytics


El complemento de Gradle de Crashlytics puede detectar automáticamente las ofuscaciones que hagas a tu código. Cuando tu compilación genera un archivo de asignación, el complemento lo sube para que los servidores de Crashlytics puedan usar el archivo para procesar los seguimientos de pila de tu app como código desofuscado y legible por humanos.

Configuración obligatoria cuando se usan R8, ProGuard y DexGuard

Crashlytics puede desofuscar con cualquier archivo de asignación compatible con ProGuard. Además, se probó con ProGuard, R8 y DexGuard.

Si tu app usa R8 con ofuscación activada junto y la versión 4.2.0 o posterior del complemento de Android para Gradle, Crashlytics generará informes de fallas legibles. Ten en cuenta que Crashlytics recientemente mejoró la compatibilidad con apps que usan Kotlin y R8, lo que puede generar algunos problemas de etiquetado inesperados.

Si tu app usa el archivo de configuración de ProGuard, debes conservar la información que Crashlytics necesita para producir informes de fallas legibles. Para ello, agrega las siguientes líneas al archivo de configuración de ProGuard o DexGuard:

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

Si quieres obtener ayuda o si tienes preguntas relacionadas con DexGuard, comunícate directamente con el equipo de asistencia al cliente de Guardsquare. Si necesitas ayuda con ProGuard, visita los foros de la comunidad de Guardsquare para recibir asistencia de un experto.

Mantén variantes de compilación ofuscadas

Para evitar que el complemento de Gradle de Crashlytics suba el archivo de asignación de las variantes que usan la ofuscación, configura la propiedad de extensión de Gradle firebaseCrashlytics.mappingFileUploadEnabled como false en el archivo de Gradle de módulo (nivel de la app) (por lo general, <project>/<app-module>/build.gradle.kts o <project>/<app-module>/build.gradle). Esto puede acelerar los tiempos de compilación para compilaciones ofuscadas, pero ten en cuenta que los seguimientos de pila resultantes aparecerán ofuscados en la página de Crashlytics de 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
    }
  }
}
}