Lesbare Absturzberichte im Crashlytics-Dashboard abrufen (Android)

Plattform auswählen: iOS+ Android Flutter Unity


Das Gradle-Plug-in Crashlytics 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 in Crashlytics lesbare Absturzberichte erstellt. Beachten Sie, dass Crashlytics vor Kurzem die Unterstützung für Apps verbessert hat, die sowohl Kotlin als auch R8 verwenden. Dies kann zu einer unerwarteten Problemkennzeichnung 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 Verschleierung 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 verschleierte Builds verkürzt werden. Beachten Sie jedoch, dass die resultierenden Stacktraces auf der Seite Crashlytics der Firebase-Konsole verschleiert 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
    }
  }
}
}