Obtenez des rapports d'erreur lisibles dans le tableau de bord Crashlytics


Le plug-in Gradle Crashlytics peut détecter automatiquement lorsque vous obscurcissez votre code. Lorsque votre compilation génère un fichier de mappage, le plug-in l'importe afin que les serveurs Crashlytics puissent l'utiliser pour afficher les traces de pile de votre application sous forme de code non obscurci et lisible par l'homme.

Configuration requise lorsque vous utilisez R8, ProGuard et DexGuard

Crashlytics peut démasquer avec n'importe quel fichier de mappage compatible avec ProGuard. Il a également été testé avec ProGuard, R8 et DexGuard.

Si votre application utilise R8 avec l'obscurcissement activé avec Android Gradle 4.2.0 ou version ultérieure, Crashlytics génère des rapports d'erreur lisibles. Notez que Crashlytics a récemment amélioré la compatibilité avec les applications qui utilisent à la fois Kotlin et R8, ce qui peut entraîner un étiquetage de problèmes inattendu.

Si votre application utilise le fichier de configuration ProGuard, vous devez conserver les informations requises par Crashlytics pour générer des rapports d'erreur lisibles. Pour ce faire, ajoutez les lignes suivantes à votre fichier de configuration ProGuard ou DexGuard:

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

Pour obtenir de l'aide concernant des questions ou des problèmes liés à DexGuard, contactez directement l'équipe d'assistance Guardsquare. Pour obtenir de l'aide concernant ProGuard, consultez les forums de la communauté Guardsquare afin d'obtenir l'aide d'un expert.

Conserver les variantes de compilation obscurcies

Pour empêcher le plug-in Gradle Crashlytics d'importer le fichier de mappage pour les variantes qui utilisent l'obscurcissement, définissez la propriété d'extension Gradle firebaseCrashlytics.mappingFileUploadEnabled sur false dans votre fichier Gradle de module (au niveau de l'application) (généralement <project>/<app-module>/build.gradle.kts ou <project>/<app-module>/build.gradle). Cela peut aider à accélérer les temps de compilation pour les builds obscurcis, mais notez que les traces de pile résultantes apparaîtront obscurcies sur la page Crashlytics de la console Firebase.

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