| Wybierz platformę: | iOS+ Android Flutter Unity |
Wtyczka Gradle Crashlytics 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 niezaszyfrowanego i czytelnego kodu.
Wymagana konfiguracja podczas korzystania z R8, ProGuard i DexGuard
Crashlytics może odszyfrować kod za pomocą dowolnego pliku mapowania zgodnego z ProGuardem. Został też przetestowany z ProGuardem, R8 i DexGuardem.
Jeśli Twoja aplikacja używa R8 z włączonym zaciemnianiem kodu oraz wtyczki Androida do obsługi Gradle w wersji 4.2.0 lub nowszej, Crashlytics będzie generować czytelne raporty o awariach. Pamiętaj, że Crashlyticsniedawno ulepszyliśmy obsługę aplikacji, które korzystają zarówno z Kotlina, jak i z R8, co może prowadzić do nieoczekiwanych problemów z oznaczaniem.
Jeśli Twoja aplikacja korzysta z pliku konfiguracyjnego ProGuard, musisz zachować informacje, których Crashlytics wymaga 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 skorzystaj z pomocy eksperta.
Zachowywanie zaciemnionych wariantów kompilacji
Aby zapobiec przesyłaniu przez Crashlyticswtyczkę Gradle pliku mapowania dla 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ć kompilowanie zaciemnionych wersji, ale pamiętaj, że wynikowe ślady stosu będą zaciemnione na stronie Crashlytics w Firebase konsoli.
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 } } } }