Firebase Crashlytics — bu nədir, craşlər və nasazlıqların diaqnostikası

Müəllif: IT Sectr Dərc olunub: 2026-04-27 Oxuma vaxtı: 10 dəq

Firebase Crashlytics — mobil tətbiqlərin nasazlıqlarını real vaxtda toplamaq, qruplaşdırmaq və təhlil etmək üçün Google xidmətidir. SDK avtomatik olaraq işlənməmiş istisnaları, native-kod craşlərini və ANR siqnallarını yaxalayır, stack izi, cihaz vəziyyəti və loglarla ətraflı hesabat yaradır. Google, 2026 məlumatlarına görə, Crashlytics dünya üzrə 4 milyondan çox tətbiqdə istifadə olunur. Xidmət layihə başına gündə 500 min sessiya limiti ilə pulsuz təqdim olunur.

Əsas məlumatlar

  • Firebase Crashlytics — gündə 500 min sessiyaya qədər pulsuz tariflə avtomatik craş toplayıcısı.
  • SDK istisnaları Kotlin, Java, Swift, Objective-C, native C/C++ və Android-də ANR yaxalayır.
  • Hər hesabatda stack izi, tətbiq versiyası, cihaz modeli və istifadəçi logları var.
  • Crashlytics eyni craşləri stack və tezliyə görə qruplaşdırır, təsirlənmiş istifadəçilərin sayını göstərir.
  • Xidmət Analytics ilə inteqrasiya olunub — eyni interfeysdə istifadəçinin nasazlığa qədərki yolunu görmək olar.

Firebase Crashlytics nədir

Firebase Crashlytics — Google tərəfindən 2017-ci ildə Fabric şirkəti ilə birlikdə satın alınmış mobil tətbiqlərin sabitliyini izləmək üçün pulsuz Google xidmətidir. Crashlytics avtomatik olaraq hər bir tətbiq nasazlığı haqqında məlumat toplayır, eyni craşləri stack imzasına görə qruplaşdırır və onları Firebase konsolunda təsirlənmiş istifadəçilərin sayına görə prioritetləşdirərək göstərir.

Tarix və təkamül

Crashlytics 2011-ci ildə Fabric platformasının bir hissəsi kimi işə salınıb və tez bir zamanda iOS-da craş hesabatı üçün de-facto standart oldu. Google tərəfindən 2017-ci ildə təxminən 2 milyard dollara (bütün Fabric) satın alındıqdan sonra Crashlytics Firebase SDK-ya inteqrasiya edildi. 18.0.0 versiyası (2021) Kotlin Multiplatform dəstəyi, 19.0.0 versiyası (2024) isə Android-də əlavə konfiqurasiya olmadan avtomatik ANR toplanması əlavə etdi. Google (2026) məlumatlarına görə, Crashlytics ayda 10 milyarddan çox craş emal edir.

Crashlytics-in pulsuz limitləri

Crashlytics bir Firebase layihəsi üçün gündə 500 min sessiya limiti ilə pulsuz təqdim olunur. Əksər tətbiqlər üçün bu kifayətdir — Google (2026) məlumatlarına görə, layihələrin 95%-i limiti keçmir. Limit aşıldıqda məlumat toplanması dayanmır, lakin hesabatlar növbəti günə qədər yenilənmir. Yüksək yükü olan layihələr üçün Firebase-in Spark və Blaze tarifləri mövcuddur — Crashlytics hər iki tarifdə pulsuz qalır və sessiya limiti ayrıca hesablanır.

Crashlytics nasazlıqları necə aşkarlayır və toplayır

Toplama mexanizmi Crashlytics platforma və runtime səviyyəsində istisnaların yaxalanmasına əsaslanır. Android-də SDK bütün yaxalanmamış Kotlin və Java istisnalarını yaxalayan UncaughtExceptionHandler tətbiq edir. iOS-da Crashlytics Objective-C/Swift üçün NSSetUncaughtExceptionHandler və native kod craşları üçün öz Mach-istisna işləyicisindən istifadə edir.

Yaxalanan nasazlıq növləri

Crashlytics beş növ nasazlığı fərqləndirir: fatal (ölümcül craşlar), non-fatal (əl ilə ötürülən qeyri-ölümcül istisnalar), ANR (Android — tətbiq cavab vermir), signal (OS siqnalları — SIGSEGV, SIGABRT) və OOM (iOS-da yaddaşın çatışmaması). Hər növ ayrı bir mexanizm tərəfindən işlənir və konsolda müvafiq etiketlə göstərilir.

Nasazlıq növüPlatformalarTrigger
FatalAndroid, iOSYaxalanmamış istisna
Non-fatalAndroid, iOSCrashlytics.logException() əl ilə çağırışı
ANRAndroidCavab olmaması > 5 saniyə
SignalAndroid, iOSOS siqnalı (SEGV, ABRT, BUS)
OOMiOSYaddaşın çatışmaması

Nasazlıq hesabatının formatı

Hər bir Crashlytics hesabatı hərtərəfli məlumat ehtiva edir: sinif adları və sətir nömrələri ilə tam stack izi, tətbiq versiyası (versionName + versionCode), cihaz modeli, OS versiyası, boş yaddaşın miqdarı, ekran oriyentasiyası və işə salınma vaxtı. Firebase Analytics qoşulubsa, hesabata nasazlıqdan əvvəl istifadəçinin son 50 hadisəsindən ibarət yol da daxildir — bu craşın təkrar istehsalı üçün kritik əhəmiyyət daşıyır.

kotlin
class CrashlyticsHelper {
    fun logNonFatal(error: Throwable) {
        FirebaseCrashlytics.getInstance()
            .log("Non-fatal: user action = payment_failed")
        FirebaseCrashlytics.getInstance()
            .recordException(error)
    }

    fun setUserContext(userId: String) {
        FirebaseCrashlytics.getInstance()
            .setUserId(userId)
        FirebaseCrashlytics.getInstance()
            .setCustomKey("subscription", "premium")
    }
}

Crashlytics-in Android layihəsinə inteqrasiyası

Crashlytics-in qoşulması Android tətbiqinə build.gradle-də iki asılılığın əlavə edilməsini və Google Services plagininin konfiqurasiyasını tələb edir. SDK Firebase-in işə salınması zamanı əlavə kod olmadan avtomatik olaraq craş hesabatını aktivləşdirir. Düzgün işləmə üçün həmçinin google-services plagini və Firebase konsolundan google-services.json faylı tələb olunur.

groovy
// build.gradle (project-level)
plugins {
    id "com.google.gms.google-services" version "4.4.0"
}

// build.gradle (app-level)
plugins {
    id "com.google.firebase.crashlytics"
}

dependencies {
    implementation(platform("com.google.firebase:firebase-bom:33.1.0"))
    implementation("com.google.firebase:firebase-crashlytics-ktx")
    implementation("com.google.firebase:firebase-analytics-ktx")
}

Crashlytics plagininin konfiqurasiyası

com.google.firebase.crashlytics plagini iki tapşırığı yerinə yetirir: gizlədilmiş stack-lərin xəritələşdirilməsi üçün unikal qurma identifikatoru (build ID) yaradır və Crashlytics SDK üçün resursları avtomatik yaradır. Plagin olmadan craşlar "unmapped" olaraq qeyd olunacaq — yalnız gizlədilmiş sinif adlarını (a.b.c) görəcəksiniz, mənbə kodu tapmaq mümkün olmayacaq. Plagin kök build.gradle və tətbiq modulunun build.gradle faylına əlavə olunur.

İnteqrasiyanın yoxlanılması

Crashlytics inteqrasiyasını sınamaq üçün test istisnası yaradan xüsusi forceCrash() metodundan istifadə olunur. İstehsal qurmalarında bu metod mövcud deyil. Test craşını işə saldıqdan sonra hesabat 1-5 dəqiqə ərzində Firebase konsolunda görünür. Hesabat göstərilmirsə — google-services.json faylının tətbiq paketinə uyğun olduğunu və AndroidManifest-də məlumat toplanmasını söndürən bayraqların olmadığını yoxlayın.

Craşlərin təhlili və hesabatların qruplaşdırılması

Crashlytics konsolu iki baxış səviyyəsi təmin edir: nasazlıq növünə görə qruplaşdırma ilə bütün craşların siyahısı (Issues) və hər bir Issue üçün stack izi, statistika və istifadəçi məlumatları ilə ətraflı hesabat. Hər bir Issue eyni imzaya malik bütün craşları birləşdirir — eyni istisna növü və uyğun stack izi.

Issues və qruplaşdırma

Craşlərin qruplaşdırılması — Crashlytics-in əsas xüsusiyyətidir. Minlərlə fərdi craş göstərmək əvəzinə, xidmət onları stack izinin yoxlama cəmi olan fingerprint əsasında Issues-də birləşdirir. Bir Issue 1-dən bir neçə milyona qədər craş ehtiva edə bilər. Hər Issue üçün göstərilir: ölümcül halların sayı, unikal istifadəçilərin sayı, craşın göründüyü tətbiq versiyası və problemlə qarşılaşan istifadəçilərin faizi.

Google (2026) məlumatlarına görə, orta hesabla Issues-in 20%-i tətbiqin bütün ölümcül craşlarının 80%-ni təşkil edir (Pareto prinsipi). Crashlytics Issues-i severity-ə görə avtomatik sıralayır — nə qədər çox istifadəçi təsirlənibsə, prioritet bir o qədər yüksəkdir. Bu, proqramçıya ilk növbədə ən kütləvi problemləri düzəltməyə imkan verir.

Versiyalar üzrə statistika

Crashlytics hər bir tətbiq versiyasının sabitliyini ayrıca izləyir. Crash-free users qrafiki hər versiyada ölümcül craşla qarşılaşmayan istifadəçilərin faizini göstərir. Yeniləmə zamanı faiz həddən (standart olaraq 99%) aşağı düşərsə, Crashlytics e-poçt və Firebase Console vasitəsilə bildiriş göndərir. Bu, problemli versiyanı tez geri qaytarmağa və ya hotfix buraxmağa imkan verir.

İstifadəçi açarları, loglar və Breadcrumbs

Crashlytics hesabatları kontekstlə zənginləşdirmək üçün üç mexanizm təmin edir: strukturlaşdırılmış məlumatlar üçün istifadəçi açarları (keys), mətn izləmə üçün loglar (logs) və istifadəçi yolu üçün Analytics-dən Breadcrumbs. Hər üç məlumat növü craş hesabatına əlavə olunur və onun detal kartında görünür.

İstifadəçi açarları

Custom Keys — hər craşla birlikdə ötürülən "açar-dəyər" cütlərindədir. Tətbiq üzrə maksimum 64 açar, hər açar — uzunluğu 1024 simvola qədər olan sətir. Açarlar tətbiqin vəziyyətini qeyd etmək üçün əlverişlidir: abunə səviyyəsi, avtorizasiya statusu, son ekran, VPN-in aktiv olub-olmaması. Dəyərlər üzərinə yazılır — eyni adlı yeni açar köhnəsini əvəz edir.

Hadisələrin loglanması

Custom Logs — Crashlytics-in 64 KB ölçülü dairəvi buferdə saxladığı mətn mesajlarıdır. Loglar avtomatik olaraq növbəti craşa əlavə olunur. Craş baş verməzsə — loglar serverə ötürülmür (trafik sərf etmir). Loglama nasazlıqdan əvvəl istifadəçinin addımlarını qeyd etmək üçün istifadə olunur: "payment_processing_started", "api_call_initiated", "response_received_200".

kotlin
class PaymentViewModel {
    fun processPayment(amount: Double) {
        FirebaseCrashlytics.getInstance().log("Payment started: amount=$amount")

        FirebaseCrashlytics.getInstance().setCustomKey("last_screen", "payment_screen")
        FirebaseCrashlytics.getInstance().setCustomKey("subscription_tier", "basic")

        try {
            paymentGateway.charge(amount)
        } catch (e: NetworkException) {
            FirebaseCrashlytics.getInstance().recordException(e)
        }
    }
}

Analytics-dən Breadcrumbs

Layihədə Firebase Analytics qoşulubsa, Crashlytics avtomatik olaraq Breadcrumbs alır — craşdan əvvəlki son 50 analitik hadisə. Hər breadcrumb hadisənin adını və onun parametrlərini ehtiva edir. Bu, nasazlığa səbəb olan dəqiq hərəkət ardıcıllığını bərpa etməyə imkan verir: istifadəçi ekranı açdı → məhsul əlavə etdi → ödənişə keçdi → craş baş verdi. Breadcrumbs Issue kartında ayrıca "Logs" sekmesinde göstərilir.

Nasazlıqlarla iş üçün ən yaxşı təcrübələr

Crashlytics kontekstin düzgün konfiqurasiyası və Issues-in işlənmə prosesi ilə ən effektivdir. Təcrübə göstərir ki, craşlarla iş qaydalarını tətbiq edən komandalar kritik səhvlərin düzəldilmə müddətini 60% qısaldır (Google, 2026 məlumatları).

Issues-in prioritetləşdirilməsi

Bütün craşlar eyni dərəcədə vacib deyil. İstifadəçilərin sayına və tezliyə görə prioritetləşdirmə ən kritik problemlərə diqqət yetirməyə kömək edir. Qayda: istifadəçilərin 0.1%-dən çoxuna təsir edən Issues-i 24 saat ərzində düzəldin. Tək hallarla (< 0.01%) Issues-i növbəti planlı buraxılışa qədər təxirə salmaq olar. Crashlytics avtomatik olaraq reqressiyaları qeyd edir — düzəldilmiş, lakin yeni versiyada yenidən ortaya çıxan Issues.

CI/CD ilə inteqrasiya

Crashlytics API REST API və ya Firebase CLI vasitəsilə craş hesabatlarını CI/CD pipeline-na inteqrasiya etməyə imkan verir. Hər yeni buraxılışda crash-free users faizinin həddi aşmadığını avtomatik yoxlamaq olar. Hədd aşılıbsa — CI/CD yayımlanmanı bloklayır və komandaya bildiriş göndərir. Firebase CLI ProGuard/R8 xəritələmə fayllarını yükləmək üçün firebase crashlytics:builds:upload əmrini dəstəkləyir — onlar olmadan stack-lər oxunmaz olacaq.

Google (2026) məlumatlarına görə, CI/CD-də crash-free həddinin avtomatik yoxlanmasından istifadə edən tətbiqlər istehsalata 40% daha az reqressiya buraxır. Tövsiyə olunan hədd: kritik buraxılışlar üçün crash-free users >= 99.5%, adi buraxılışlar üçün >= 99.0%.

Tez-tez verilən suallar

Crashlytics-də pulsuz sessiyaların limiti nədir?

Crashlytics Firebase layihəsi üçün gündə 500 min sessiyaya qədər pulsuzdur. Limit aşıldıqda hesabatlar növbəti günə qədər yenilənmir, lakin məlumat toplanması dayanmır.

Crashlytics üçün Firebase Analytics tələb olunurmu?

Crashlytics Analytics olmadan işləyir, lakin onunla hesabatlarda Breadcrumbs — craşdan əvvəl istifadəçinin son 50 hadisəsi olur. Hər iki modulu qoşmaq tövsiyə olunur.

Crashlytics eyni craşları necə qruplaşdırır?

Qruplaşdırma stack izinin yoxlama cəmi olan fingerprint əsasında aparılır, istisna növləri və sətir nömrələri daxil olmaqla. Eyni fingerprint-ə malik craşlar bir Issue-ə düşür.

Niyə craş konsolda göstərilmir?

Parametrləri yoxlayın: google-services.json faylı, build.gradle-də crashlytics plagininin olması, konsolda versiya üzrə filtrasiyanın olmaması və lisenziya müqaviləsini qəbul etmiş qurmanın mövcudluğu. Debug yalnız release qurmalarında işləyir.

Crashlytics-ə qeyri-ölümcül səhvlər göndərmək olarmı?

Bəli, qeyri-ölümcül istisnalar üçün recordException() istifadə edin. Bu cür hesabatlar tətbiqin işini dayandırmır, lakin konsolda baş vermə sayğacı və tam stack izi ilə göstərilir.

Nəticə

  • Firebase Crashlytics — layihə başına gündə 500 min sessiya limiti ilə craşların toplanması və təhlili üçün pulsuz xidmət.
  • SDK hər iki mobil platformada bütün növ nasazlıqları yaxalayır: ölümcül istisnalar, ANR, OS siqnalları və OOM.
  • Hər hesabatda stack izi, cihaz vəziyyəti, tətbiq versiyası və craşdan əvvəl 50 analitik hadisə var.
  • İnteqrasiya stack-lərin düzgün deobfuskasiyası üçün Gradle-də google-services və crashlytics plagini tələb edir.
  • Issues eyni craşları stack imzasına görə qruplaşdırır, təsirlənmiş istifadəçilərin sayına görə prioritetləşdirir.
  • Fərdi açarlar və loglar hesabatı kontekstlə zənginləşdirməyə imkan verir — abunə statusu, son ekran, craşdan əvvəlki addımlar.
  • CI/CD ilə Crashlytics API vasitəsilə inteqrasiya crash-free faizi həddən aşağı düşdükdə yayımlanmanı bloklamağa imkan verir.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun