Ottenere report sugli arresti anomali leggibili nella dashboard di Crashlytics (Android)

Seleziona la piattaforma: iOS+ Android Flutter Unity


Il plug-in Gradle Crashlytics può rilevare automaticamente quando offuschi il codice. Quando la build genera un file di mapping, il plug-in lo carica in modo che i server Crashlytics possano utilizzare il file per eseguire il rendering delle tracce dello stack dell'app come codice non offuscato e leggibile.

Configurazione obbligatoria quando si utilizzano R8, ProGuard e DexGuard

Crashlytics può eseguire la deoffuscazione con qualsiasi file di mapping compatibile con ProGuard e è stato testato anche con ProGuard, R8 e DexGuard.

Se la tua app utilizza R8 con l'offuscamento attivato insieme ad Android Gradle 4.2.0 o versioni successive, Crashlytics genererà report sugli arresti anomali leggibili. Tieni presente che Crashlytics ha recentemente migliorato il supporto per le app che utilizzano sia Kotlin sia R8, il che può portare a un' etichettatura imprevista dei problemi.

Se la tua app utilizza il file di configurazione di ProGuard, devi conservare le informazioni Crashlytics richieste per generare report sugli arresti anomali leggibili. Per farlo, aggiungi le seguenti righe al file di configurazione di ProGuard o DexGuard:

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

Per ricevere assistenza in merito a domande o problemi relativi a DexGuard, contatta il team di assistenza di Guardsquare direttamente. Per ricevere assistenza con ProGuard, visita i forum della community di Guardsquare per ricevere aiuto da un esperto.

Mantenere le varianti di build offuscate

Per impedire al plug-in Gradle di Crashlytics di caricare il file di mapping per le varianti che utilizzano l'offuscamento, imposta la proprietà di estensione Gradle firebaseCrashlytics.mappingFileUploadEnabled su false nel file Gradle a livello di modulo (app) (in genere <project>/<app-module>/build.gradle.kts o <project>/<app-module>/build.gradle). In questo modo, i tempi di compilazione delle build offuscate possono essere più rapidi, ma tieni presente che le tracce dello stack risultanti verranno visualizzate offuscate nella pagina Crashlytics della console 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
    }
  }
}
}