| Wybierz platformę: | iOS+ Android Flutter Unity |
Wtyczka Crashlytics do Gradle może automatycznie wykrywać, kiedy zaciemniasz kod. Gdy kompilacja wygeneruje plik mapowania, wtyczka prześle go aby serwery Crashlytics mogły użyć go do renderowania śladów stosu aplikacji jako niezaciemnionego i czytelnego dla człowieka kodu.
Wymagana konfiguracja w przypadku korzystania z R8, ProGuard i DexGuard
Crashlytics może cofać zaciemnianie za pomocą dowolnego pliku mapowania zgodnego z ProGuard. Został też przetestowany z ProGuard, R8 i DexGuard.
Jeśli Twoja aplikacja używa R8 z włączonym zaciemnianiem oraz Android Gradle w wersji 4.2.0 lub nowszej, Crashlytics będzie generować czytelne raporty o awariach. Pamiętaj, że Crashlytics niedawno ulepszył obsługę aplikacji, które używają zarówno Kotlin, jak i R8, co może prowadzić do niektórych nieoczekiwanych problemów z etykietowaniem.
Jeśli Twoja aplikacja używa pliku konfiguracyjnego ProGuard, musisz zachować informacje Crashlytics potrzebuje do generowania czytelnych raportów o awariach. Aby to zrobić, dodaj te wiersze do pliku konfiguracyjnego ProGuard lub DexGuard:
-keepattributes SourceFile,LineNumberTable # Keep file names and line numbers. -keep public class * extends java.lang.Exception # Optional: Keep custom exceptions.
Jeśli masz pytania lub problemy związane z DexGuard, skontaktuj się bezpośrednio z zespołem pomocy Guardsquare. Aby uzyskać pomoc dotyczącą ProGuard, odwiedź fora społeczności Guardsquare i poproś o pomoc eksperta.
Zachowaj zaciemnione warianty kompilacji
Aby wtyczka Crashlytics do Gradle nie przesyłała pliku mapowania w przypadku
wariantów, które używają zaciemniania, ustaw właściwość rozszerzenia Gradle
firebaseCrashlytics.mappingFileUploadEnabled na
false w pliku Gradle modułu (na poziomie aplikacji)
(zwykle <project>/<app-module>/build.gradle.kts lub
<project>/<app-module>/build.gradle). Może to przyspieszyć
kompilację zaciemnionych wersji, ale pamiętaj, że ślady stosu będą
zaciemnione na stronie Crashlytics w Konsoli 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 } } } }