| Seleziona la piattaforma: | iOS+ Android Flutter Unity |
Il plug-in Gradle Crashlytics è in grado di 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 analisi 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ò comportare un'etichettatura imprevista di alcuni 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 del modulo (a livello di app)
(in genere <project>/<app-module>/build.gradle.kts o
<project>/<app-module>/build.gradle). In questo modo, i tempi di build per le build offuscate possono essere più rapidi, ma tieni presente che le analisi 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 } } } }