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 } } } }