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 — 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.
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 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.
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.
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ü | Platformalar | Trigger |
|---|---|---|
| Fatal | Android, iOS | Yaxalanmamış istisna |
| Non-fatal | Android, iOS | Crashlytics.logException() əl ilə çağırışı |
| ANR | Android | Cavab olmaması > 5 saniyə |
| Signal | Android, iOS | OS siqnalı (SEGV, ABRT, BUS) |
| OOM | iOS | Yaddaşın çatışmaması |
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.
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 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.
// 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")
}
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.
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.
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.
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.
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.
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.
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.
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".
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)
}
}
}
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.
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ı).
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.
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 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 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.
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.
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.
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ə
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.
Həm də oxuyun