Le plug-in Gradle Crashlytics peut détecter automatiquement quand vous obfusquez votre code. Lorsque votre build 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é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érera 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 inattendu des problèmes.
Si votre application utilise le fichier de configuration ProGuard, vous devez conserver les informations dont Crashlytics 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 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 pour 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 au niveau du module (application) (généralement <project>/<app-module>/build.gradle.kts
ou <project>/<app-module>/build.gradle
). Cela peut contribuer à 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 } } } }