Crashlytics Gradle eklentisi, kodunuzu kararttığınızda bunu otomatik olarak algılayabilir. Derlemeniz bir eşleme dosyası oluşturduğunda eklenti bu dosyayı yükler. Böylece Crashlytics sunucuları, uygulamanızın yığın izlerini karartılmamış ve okunabilir kod olarak oluşturmak için dosyayı kullanabilir.
R8, ProGuard ve DexGuard kullanılırken gerekli yapılandırma
Crashlytics, ProGuard ile uyumlu herhangi bir eşleme dosyasıyla kod karartmayı kaldırabilir ve ayrıca ProGuard, R8 ve DexGuard ile test edilmiştir.
Uygulamanızda karartma etkin durumdayken Android Gradle 4.2.0+ ile birlikte R8 kullanılıyorsa Crashlytics, okunabilir kilitlenme raporları oluşturur. Crashlytics Kotlin ve R8'i birlikte kullanan uygulamalar için destek yakın zamanda iyileştirildi. Bu durum, bazı beklenmedik sorun etiketlemelerine yol açabilir.
Uygulamanız ProGuard yapılandırma dosyasını kullanıyorsa okunabilir kilitlenme raporları oluşturmak için gereken bilgileri korumanız gerekir.Crashlytics Aşağıdaki satırları ProGuard veya DexGuard yapılandırma dosyanıza ekleyerek bunu yapabilirsiniz:
-keepattributes SourceFile,LineNumberTable # Keep file names and line numbers. -keep public class * extends java.lang.Exception # Optional: Keep custom exceptions.
DexGuard ile ilgili sorularınız veya sorunlarınız için doğrudan Guardsquare destek ekibiyle iletişime geçin. ProGuard ile ilgili yardım için Guardsquare Topluluk Forumları'nı ziyaret ederek bir uzmandan destek alın.
Karartılmış derleme varyantlarını saklama
Crashlytics Gradle eklentisinin karartma kullanan varyantlar için eşleme dosyasını yüklemesini önlemek amacıyla firebaseCrashlytics.mappingFileUploadEnabled
Gradle uzantısı özelliğini modül (uygulama düzeyi) Gradle dosyanızda (genellikle <project>/<app-module>/build.gradle.kts
veya <project>/<app-module>/build.gradle
) false
olarak ayarlayın. Bu, karartılmış derlemelerin derleme sürelerini hızlandırmaya yardımcı olabilir ancak sonuçtaki yığın izlerinin Firebase konsolunun Crashlytics sayfasında karartılmış olarak görüneceğini unutmayın.
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 } } } }