Lesbare Absturzberichte im Crashlytics-Dashboard abrufen (Android)

Plattform auswählen: iOS+ Android Web Flutter Unity


Das Crashlytics-Gradle-Plug-in kann automatisch erkennen, wenn Sie Ihren Code verschleiern. Wenn Ihr Build eine Zuordnungsdatei generiert, wird sie vom Plug-in hochgeladen, damit die Crashlytics-Server die Datei verwenden können, um die Stacktraces Ihrer App als nicht verschleierten und menschenlesbaren Code zu rendern.

Erforderliche Konfiguration bei Verwendung von R8, ProGuard und DexGuard

Crashlytics kann mit jeder ProGuard-kompatiblen Zuordnungsdatei deobfuskieren und wurde zusätzlich mit ProGuard, R8 und DexGuard getestet.

Wenn Ihre App R8 mit aktivierter Verschleierung und Android Gradle 4.2.0 oder höher verwendet, werden mit Crashlytics lesbare Absturzberichte erstellt. Beachte, dass Crashlytics vor Kurzem die Unterstützung für Apps verbessert hat, die sowohl Kotlin als auch R8 verwenden. Dies kann zu einer unerwarteten Kennzeichnung von Problemen führen.

Wenn Ihre App die ProGuard-Konfigurationsdatei verwendet, müssen Sie die Informationen beibehalten, die Crashlytics für die Erstellung lesbarer Absturzberichte benötigt. Fügen Sie dazu die folgenden Zeilen in die ProGuard- oder DexGuard-Konfigurationsdatei ein:

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

Wenn Sie Fragen oder Probleme im Zusammenhang mit DexGuard haben, wenden Sie sich direkt an das Guardsquare-Supportteam. Wenn du Hilfe zu ProGuard benötigst, kannst du dich in den Guardsquare-Community-Foren an einen Experten wenden.

Verschleierte Build-Varianten beibehalten

Wenn Sie verhindern möchten, dass das Gradle-Plug-in Crashlytics die Zuordnungsdatei für Varianten hochlädt, die Obfuskation verwenden, setzen Sie die Gradle-Erweiterungseigenschaft firebaseCrashlytics.mappingFileUploadEnabled in der Gradle-Datei Ihres Moduls (auf App-Ebene) (normalerweise <project>/<app-module>/build.gradle.kts oder <project>/<app-module>/build.gradle) auf false. Dadurch können die Build-Zeiten für obfuskierte Builds verkürzt werden. Beachten Sie jedoch, dass die resultierenden Stacktraces auf der Seite Crashlytics der Firebase-Konsole obfuskierte angezeigt werden.

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
    }
  }
}
}