Im Crashlytics-Dashboard sind lesbare Absturzberichte verfügbar.


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 lesbaren Code zu rendern.

Erforderliche Konfiguration bei Verwendung von R8, ProGuard und DexGuard

Crashlytics kann mit jeder ProGuard-kompatiblen Mapping-Datei deobfuskiert werden 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, generiert Crashlytics lesbare Absturzberichte. Crashlytics hat vor Kurzem die Unterstützung für Apps verbessert, die sowohl Kotlin als auch R8 verwenden. Das 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 bitte direkt an das Guardsquare-Supportteam. Wenn Sie Hilfe zu ProGuard benötigen, können Sie sich an einen Experten in den Guardsquare-Communityforen wenden.

Verschleierte Build-Varianten beibehalten

Damit das Crashlytics-Gradle-Plug-in die Zuordnungsdatei für Varianten, die Verschleierung verwenden, nicht hochlädt, legen Sie die Gradle-Erweiterungseigenschaft firebaseCrashlytics.mappingFileUploadEnabled in der Gradle-Datei des 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
    }
  }
}
}