| Выберите платформу: | iOS+ Android Flutter Unity |
Плагин Crashlytics для Gradle может автоматически определять, когда вы обфусцируете свой код. Когда ваша сборка генерирует файл сопоставления, плагин загружает его, чтобы серверы Crashlytics могли использовать этот файл для преобразования трассировок стека вашего приложения в необфусцированный и удобочитаемый код.
Необходимая конфигурация при использовании R8, ProGuard и DexGuard
Crashlytics может деобфусцировать данные с помощью любого файла сопоставления, совместимого с ProGuard, и дополнительно был протестирован с ProGuard, R8 и DexGuard.
Если ваше приложение использует R8 с включенной обфускацией, а также Android Gradle 4.2.0+, Crashlytics будет создавать читаемые отчеты о сбоях. Обратите внимание, что Crashlytics недавно улучшил поддержку приложений, использующих как Kotlin, так и R8, что может привести к некоторым неожиданным меткам проблем .
Если ваше приложение использует конфигурационный файл ProGuard, вам необходимо сохранить информацию, необходимую Crashlytics для создания читаемых отчетов о сбоях. Для этого добавьте следующие строки в конфигурационный файл ProGuard или DexGuard:
-keepattributes SourceFile,LineNumberTable # Keep file names and line numbers. -keep public class * extends java.lang.Exception # Optional: Keep custom exceptions.
Для получения помощи по вопросам или проблемам, связанным с DexGuard, обратитесь напрямую в службу поддержки Guardsquare . Для получения помощи по ProGuard посетите форумы сообщества Guardsquare , где вы сможете получить консультацию эксперта.
Сохраняйте обфусцированные варианты сборки.
Чтобы предотвратить загрузку файла сопоставления для вариантов, использующих обфускацию, плагином Crashlytics Gradle установите свойство расширения Gradle firebaseCrashlytics.mappingFileUploadEnabled в значение false в файле Gradle вашего модуля (уровня приложения) (обычно <project>/<app-module>/build.gradle.kts или <project>/<app-module>/build.gradle ). Это может помочь ускорить время сборки для обфусцированных сборок, но обратите внимание, что результирующие трассировки стека будут отображаться в обфусцированном виде на странице Crashlytics в консоли 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 } } } }