| Выберите платформу: | iOS+ Android Flutter Unity |
Плагин Gradle Crashlytics может автоматически определять, когда вы обфусцируете код. Когда сборка создает файл сопоставления, плагин загружает его, чтобы серверы 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, чтобы получить консультацию эксперта.
Сохранять обфусцированные варианты сборки
Чтобы плагин Gradle Crashlytics не загружал файл сопоставления для вариантов, в которых используется обфускация, задайте для свойства расширения 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 } } } }