| Выберите платформу: | 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 , где вы сможете получить консультацию эксперта.
Сохраняйте обфусцированные варианты сборки.
To prevent the Crashlytics Gradle plugin from uploading the mapping file for variants that use obfuscation, set the firebaseCrashlytics.mappingFileUploadEnabled Gradle extension property to false in your module (app-level) Gradle file (usually <project>/<app-module>/build.gradle.kts or <project>/<app-module>/build.gradle ). This can help speed up build times for obfuscated builds, but note that resulting stack traces will appear obfuscated in the Crashlytics page of the 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 } } } }