Lesbare Absturzberichte im Crashlytics-Dashboard abrufen (Android)

Plattform auswählen: iOS+ Android Flutter Unity


Das Crashlytics-Gradle-Plug-in kann automatisch erkennen, wenn Sie Ihren Code verschleiern. Wenn bei Ihrem Build eine Zuordnungsdatei generiert wird, lädt das Plug-in sie hoch, damit die Crashlytics-Server die Datei verwenden können, um die Stacktraces Ihrer App als nicht verschleierten und für Menschen lesbaren Code zu rendern.

Erforderliche Konfiguration bei Verwendung von R8, ProGuard und DexGuard

Crashlytics kann mit jeder ProGuard-kompatiblen Mapping-Datei deobfuscated werden und wurde zusätzlich mit ProGuard, R8 und DexGuard getestet.

Wenn Ihre App R8 mit aktivierter Verschleierung zusammen mit Android Gradle 4.2.0 oder höher verwendet, werden mit Crashlytics lesbare Absturzberichte erstellt. Beachten Sie, dass Crashlytics die Unterstützung für Apps, die sowohl Kotlin als auch R8 verwenden, kürzlich verbessert hat. 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 zum Erstellen lesbarer Absturzberichte benötigt. Fügen Sie dazu die folgenden Zeilen in Ihre 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 Sie Hilfe zu ProGuard benötigen, besuchen Sie die Guardsquare-Communityforen, um Unterstützung von einem Experten zu erhalten.

Verschleierte Build-Varianten beibehalten

Damit das Crashlytics-Gradle-Plug-in die Zuordnungsdatei nicht für Varianten hochlädt, die eine Verschleierung verwenden, legen Sie die Gradle-Erweiterungseigenschaft firebaseCrashlytics.mappingFileUploadEnabled in der Gradle-Datei Ihres Moduls (auf App-Ebene) (in der Regel <project>/<app-module>/build.gradle.kts oder <project>/<app-module>/build.gradle) auf false fest. 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
    }
  }
}
}