Obtenir des rapports d'erreur lisibles dans le tableau de bord Crashlytics (Android)

Sélectionnez la plate-forme : iOS+ Android Flutter Unity


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

Configuration requise lorsque vous utilisez R8, ProGuard et DexGuard

Crashlytics peut désobfusquer 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é et 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 des problèmes d'étiquetage inattendus.

Si votre application utilise le fichier de configuration ProGuard, vous devez conserver les informations Crashlytics dont a besoin 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 les questions ou les problèmes liés à DexGuard, contactez l' équipe d'assistance Guardsquare directement. Pour obtenir de l'aide concernant ProGuard, consultez les forums de la communauté Guardsquare pour obtenir l'aide d'un expert.

Conserver les variantes de compilation obscurcies

Pour empêcher le Crashlytics Gradle de mettre en ligne le fichier de mappage pour les variantes qui utilisent l'obscurcissement, définissez la firebaseCrashlytics.mappingFileUploadEnabled propriété d'extension Gradle sur false dans le fichier Gradle de votre module (au niveau de l'application) (généralement <project>/<app-module>/build.gradle.kts ou <project>/<app-module>/build.gradle). Cela peut accélérer les temps de compilation pour les compilations obscurcies, 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
    }
  }
}
}