| Выберите платформу: | 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 } } } }