Czytelne raporty o awariach w panelu Crashlytics (Android)

Wybierz platformę: iOS+ Android Flutter Unity


Wtyczka Crashlytics do Gradle może automatycznie wykrywać, kiedy zaciemniasz kod. Gdy kompilacja wygeneruje plik mapowania, wtyczka prześle go aby serwery Crashlytics mogły użyć go do renderowania śladów stosu aplikacji jako niezaciemnionego i czytelnego kodu.

Wymagana konfiguracja podczas korzystania z R8, ProGuard i DexGuard

Crashlytics może deobfuscate za pomocą dowolnego pliku mapowania zgodnego z ProGuard. Został też przetestowany z ProGuard, R8 i DexGuard.

Jeśli Twoja aplikacja używa R8 z włączonym zaciemnianiem oraz Android Gradle w wersji 4.2.0 lub nowszej, Crashlytics będzie generować czytelne raporty o awariach. Pamiętaj, że Crashlytics niedawno ulepszył obsługę aplikacji, które używają zarówno Kotlin, jak i R8, co może prowadzić do niektórych nieoczekiwanych etykiet problemów.

Jeśli Twoja aplikacja używa pliku konfiguracyjnego ProGuard, musisz zachować informacje Crashlytics potrzebuje do generowania czytelnych raportów o awariach. Aby to zrobić, dodaj te wiersze do pliku konfiguracyjnego ProGuard lub DexGuard:

-keepattributes SourceFile,LineNumberTable        # Keep file names and line numbers.
-keep public class * extends java.lang.Exception  # Optional: Keep custom exceptions.

Jeśli masz pytania lub problemy związane z DexGuard, skontaktuj się bezpośrednio z zespołem pomocy Guardsquare. Aby uzyskać pomoc dotyczącą ProGuard, odwiedź fora społeczności Guardsquare i poproś o pomoc eksperta.

Zachowaj zaciemnione warianty kompilacji

Aby uniemożliwić wtyczce Crashlytics do Gradle przesyłanie pliku mapowania dla wariantów, które używają zaciemniania, ustaw właściwość rozszerzenia Gradle firebaseCrashlytics.mappingFileUploadEnabled na false w pliku Gradle modułu (na poziomie aplikacji) (zwykle <project>/<app-module>/build.gradle.kts lub <project>/<app-module>/build.gradle). Może to przyspieszyć kompilację zaciemnionych kompilacji, ale pamiętaj, że ślady stosu będą zaciemnione na stronie Crashlytics w konsoli 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
    }
  }
}
}