Firebase Crashlytics — bu nima, krashelar va nosozliklar diagnostikasi

Muallif: IT Sectr Nashr etilgan: 2026-04-27 O'qish vaqti: 10 daq

Firebase Crashlytics — mobil ilovalarning nosozliklarini real vaqtda yig'ish, guruhlash va tahlil qilish uchun Google xizmatidir. SDK avtomatik ravishda ishlov berilmagan istisnolarni, native-kod krashelarini va ANR signallarini tutib oladi, stack trace, qurilma holati va loglar bilan batafsil hisobot yaratadi. Google, 2026 ma'lumotlariga ko'ra, Crashlytics butun dunyo bo'ylab 4 milliondan ortiq ilovalarda qo'llaniladi. Xizmat loyiha uchun kuniga 500 ming seans limiti bilan bepul taqdim etiladi.

Asosiy ma'lumotlar

  • Firebase Crashlytics — kuniga 500 ming seansgacha bepul tarif bilan avtomatik krashelarni yig'uvchi.
  • SDK istisnolarni Kotlin, Java, Swift, Objective-C, native C/C++ va Android-da ANR ni tutib oladi.
  • Har bir hisobotda stack trace, ilova versiyasi, qurilma modeli va foydalanuvchi loglari mavjud.
  • Crashlytics bir xil krashelarni stack va chastotaga ko'ra guruhlaydi, ta'sirlangan foydalanuvchilar sonini ko'rsatadi.
  • Xizmat Analytics bilan integratsiyalangan — xuddi shu interfeysda foydalanuvchining nosozlikkacha bo'lgan yo'lini ko'rish mumkin.

Firebase Crashlytics nima

Firebase Crashlytics — Google tomonidan 2017-yilda Fabric kompaniyasi bilan birga sotib olingan mobil ilovalar barqarorligini kuzatish uchun bepul Google xizmatidir. Crashlytics avtomatik ravishda har bir ilova nosozligi haqida ma'lumot to'playdi, bir xil krashelarni stack imzosiga ko'ra guruhlaydi va ularni Firebase konsolida ta'sirlangan foydalanuvchilar soniga ko'ra prioritetlashgan holda ko'rsatadi.

Tarix va evolyutsiya

Crashlytics 2011-yilda Fabric platformasining bir qismi sifatida ishga tushirilgan va tezda iOS-da krashelar haqida hisobot berish uchun de-fakto standartga aylandi. Google tomonidan 2017-yilda taxminan 2 milliard dollarga (butun Fabric) sotib olingandan so'ng, Crashlytics Firebase SDK-ga integratsiya qilindi. 18.0.0 versiyasi (2021) Kotlin Multiplatform qo'llab-quvvatlashini, 19.0.0 versiyasi (2024) esa Android-da qo'shimcha sozlamalarsiz avtomatik ANR yig'ishni qo'shdi. Google (2026) ma'lumotlariga ko'ra, Crashlytics oyiga 10 milliarddan ortiq krashelarni qayta ishlaydi.

Crashlytics-ning bepul limitlari

Crashlytics bitta Firebase loyihasi uchun kuniga 500 ming seans limiti bilan bepul taqdim etiladi. Aksariyat ilovalar uchun bu yetarli — Google (2026) ma'lumotlariga ko'ra, loyihalarning 95% limitdan oshmaydi. Limit oshib ketganda, ma'lumot yig'ish to'xtamaydi, ammo hisobotlar keyingi kungacha yangilanmaydi. Yuqori yuklamali loyihalar uchun Firebase-ning Spark va Blaze tariflari mavjud — Crashlytics ikkala tarifda ham bepul qoladi va seans limiti alohida hisoblanadi.

Crashlytics nosozliklarni qanday aniqlaydi va yig'adi

Yig'ish mexanizmi Crashlytics platforma va runtime darajasida istisnolarni tutib olishga asoslangan. Android-da SDK barcha ushlanmagan Kotlin va Java istisnolarini tutuvchi UncaughtExceptionHandler-ni joriy qiladi. iOS-da Crashlytics Objective-C/Swift uchun NSSetUncaughtExceptionHandler va native kod krashelari uchun o'zining Mach-istisno ishlov beruvchisidan foydalanadi.

Tutib olinadigan nosozlik turlari

Crashlytics besh turdagi nosozlikni farqlaydi: fatal (halokatli krashelar), non-fatal (qo'lda uzatilgan halokatli bo'lmagan istisnolar), ANR (Android — ilova javob bermaydi), signal (OS signallari — SIGSEGV, SIGABRT) va OOM (iOS-da xotira yetishmasligi). Har bir tur alohida mexanizm tomonidan qayta ishlanadi va konsolda tegishli belgi bilan ko'rsatiladi.

Nosozlik turiPlatformalarTrigger
FatalAndroid, iOSUshlanmagan istisno
Non-fatalAndroid, iOSCrashlytics.logException() qo'lda chaqiruvi
ANRAndroidJavob yo'qligi > 5 soniya
SignalAndroid, iOSOS signali (SEGV, ABRT, BUS)
OOMiOSXotira yetishmasligi

Nosozlik hisobotining formati

Har bir Crashlytics hisoboti to'liq ma'lumotni o'z ichiga oladi: sinf nomlari va qator raqamlari bilan to'liq stack trace, ilova versiyasi (versionName + versionCode), qurilma modeli, OS versiyasi, bo'sh xotira miqdori, ekran yo'nalishi va ishga tushirish vaqti. Firebase Analytics ulangan bo'lsa, hisobotga nosozlikdan oldin foydalanuvchining oxirgi 50 ta hodisasidan iborat yo'l ham kiradi — bu krashelarni takror ishlab chiqarish uchun juda muhimdir.

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-ni Android loyihasiga integratsiyalash

Crashlytics-ni ulash Android ilovasiga build.gradle-da ikkita bog'liqlikni qo'shish va Google Services plaginini sozlashni talab qiladi. SDK Firebase ishga tushirilganda qo'shimcha kodsiz avtomatik ravishda krashelar haqida hisobot berishni faollashtiradi. To'g'ri ishlash uchun google-services plagini va Firebase konsolidan google-services.json fayli ham talab qilinadi.

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 plaginini sozlash

com.google.firebase.crashlytics plagini ikkita vazifani bajaradi: shifrlangan stacklarni xaritalash uchun noyob build ID yaratadi va Crashlytics SDK uchun resurslarni avtomatik yaratadi. Plagin bo'lmasa, krashelar "unmapped" deb belgilanadi — faqat shifrlangan sinf nomlarini (a.b.c) ko'rasiz, manba kodini topish imkoniyatisiz. Plagin ildiz build.gradle va ilova modulining build.gradle fayliga qo'shiladi.

Integratsiyani tekshirish

Crashlytics integratsiyasini sinash uchun test istisnosini yaratuvchi maxsus forceCrash() metodidan foydalaniladi. Ishlab chiqarish qurilmalarida bu metod mavjud emas. Test krashelarini ishga tushirgandan so'ng, hisobot 1-5 daqiqa ichida Firebase konsolida paydo bo'ladi. Hisobot ko'rsatilmasa — google-services.json fayli ilova paketiga mos kelishini va AndroidManifest-da ma'lumot yig'ishni o'chiruvchi bayroqlar yo'qligini tekshiring.

Krashelarni tahlil qilish va hisobotlarni guruhlash

Crashlytics konsoli ikki ko'rinish darajasini ta'minlaydi: nosozlik turiga ko'ra guruhlangan barcha krashelar ro'yxati (Issues) va har bir Issue uchun stack trace, statistika va foydalanuvchi ma'lumotlari bilan batafsil hisobot. Har bir Issue bir xil imzoga ega barcha krashelarni birlashtiradi — bir xil istisno turi va mos keluvchi stack trace.

Issues va guruhlash

Krashelarni guruhlash — Crashlytics-ning asosiy xususiyati. Minglab alohida krashelarni ko'rsatish o'rniga, xizmat ularni fingerprint — stack trace-ning nazorat summasi asosida Issues-ga birlashtiradi. Bitta Issue 1 dan bir necha milliongacha krashelarni o'z ichiga olishi mumkin. Har bir Issue uchun ko'rsatiladi: halokatli holatlar soni, noyob foydalanuvchilar soni, krashelar paydo bo'lgan ilova versiyasi va muammoga duch kelgan foydalanuvchilar foizi.

Google (2026) ma'lumotlariga ko'ra, o'rtacha Issues-ning 20% ilovaning barcha halokatli krashelarining 80% ni tashkil qiladi (Pareto printsipi). Crashlytics Issues-ni severity bo'yicha avtomatik tartiblaydi — qancha ko'p foydalanuvchi ta'sirlangan bo'lsa, prioritet shuncha yuqori. Bu dasturchiga birinchi navbatda eng ommaviy muammolarni tuzatishga imkon beradi.

Versiyalar bo'yicha statistika

Crashlytics har bir ilova versiyasining barqarorligini alohida kuzatib boradi. Crash-free users grafigi har bir versiyada halokatli krashelarga duch kelmagan foydalanuvchilar foizini ko'rsatadi. Yangilanish vaqtida foiz chegaradan (standart 99%) pastga tushsa, Crashlytics elektron pochta va Firebase Console orqali bildirishnoma yuboradi. Bu muammoli versiyani tezda qaytarish yoki hotfix chiqarish imkonini beradi.

Foydalanuvchi kalitlari, loglar va Breadcrumbs

Crashlytics hisobotlarni kontekst bilan boyitish uchun uchta mexanizmni ta'minlaydi: tuzilgan ma'lumotlar uchun foydalanuvchi kalitlari (keys), matnli kuzatish uchun loglar (logs) va foydalanuvchi yo'li uchun Analytics-dan Breadcrumbs. Har uch ma'lumot turi krashelar hisobotiga biriktiriladi va uning batafsil kartasida ko'rinadi.

Foydalanuvchi kalitlari

Custom Keys — har bir krashelar bilan birga uzatiladigan "kalit-qiymat" juftliklari. Ilova uchun maksimal 64 kalit, har bir kalit — uzunligi 1024 belgigacha bo'lgan satr. Kalitlar ilova holatini belgilash uchun qulay: obuna darajasi, avtorizatsiya holati, oxirgi ekran, VPN yoqilgan yoki yo'q. Qiymatlar ustiga yoziladi — bir xil nomdagi yangi kalit eskisini almashtiradi.

Hodisalarni loglash

Custom Logs — Crashlytics 64 KB hajmli aylanma buferda saqlaydigan matnli xabarlar. Loglar avtomatik ravishda keyingi krashelarga biriktiriladi. Agar krashelar sodir bo'lmasa — loglar serverga uzatilmaydi (trafik sarf qilmaydi). Loglash nosozlikdan oldin foydalanuvchining qadamlarini yozib olish uchun ishlatiladi: "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-dan Breadcrumbs

Loyihada Firebase Analytics ulangan bo'lsa, Crashlytics avtomatik ravishda Breadcrumbs oladi — krashelardan oldingi oxirgi 50 ta analitik hodisa. Har bir breadcrumb hodisa nomi va uning parametrlarini o'z ichiga oladi. Bu nosozlikka olib kelgan aniq harakatlar ketma-ketligini tiklash imkonini beradi: foydalanuvchi ekranni ochdi → mahsulotni qo'shdi → to'lovga o'tdi → krashelar sodir bo'ldi. Breadcrumbs Issue kartasida alohida "Logs" yorlig'ida ko'rsatiladi.

Nosozliklar bilan ishlashning eng yaxshi amaliyotlari

Crashlytics kontekstni to'g'ri sozlash va Issues-ni qayta ishlash jarayoni bilan eng samarali hisoblanadi. Amaliyot shuni ko'rsatadiki, krashelar bilan ishlash qoidalarini joriy qilgan jamoalar kritik xatolarni tuzatish vaqtini 60% ga qisqartiradi (Google, 2026 ma'lumotlari).

Issues-ni prioritetlashtirish

Barcha krashelar bir xil darajada muhim emas. Foydalanuvchilar soni va chastotasiga ko'ra prioritetlashtirish eng kritik muammolarga e'tibor qaratishga yordam beradi. Qoida: foydalanuvchilarning 0.1% dan ko'prog'iga ta'sir qiladigan Issues-ni 24 soat ichida tuzating. Yagona holatlar bilan (< 0.01%) Issues-ni keyingi rejalashtirilgan relizgacha qoldirish mumkin. Crashlytics avtomatik ravishda regressiyalarni belgilaydi — tuzatilgan, ammo yangi versiyada qayta paydo bo'lgan Issues.

CI/CD bilan integratsiya

Crashlytics API REST API yoki Firebase CLI orqali krashelar haqidagi hisobotlarni CI/CD pipeline-ga integratsiya qilish imkonini beradi. Har bir yangi relizda crash-free users foizining chegaradan oshmaganligini avtomatik tekshirish mumkin. Agar chegara oshib ketgan bo'lsa — CI/CD joylashtirishni bloklaydi va jamoaga bildirishnoma yuboradi. Firebase CLI ProGuard/R8 xaritalash fayllarini yuklash uchun firebase crashlytics:builds:upload buyrug'ini qo'llab-quvvatlaydi — ularsiz stacklar o'qib bo'lmaydigan bo'ladi.

Google (2026) ma'lumotlariga ko'ra, CI/CD da crash-free chegaralarini avtomatik tekshirishdan foydalanadigan ilovalar ishlab chiqarishga 40% kamroq regressiya chiqaradi. Tavsiya etilgan chegara: kritik relizlar uchun crash-free users >= 99.5%, oddiy relizlar uchun >= 99.0%.

Ko'p beriladigan savollar

Crashlytics-da bepul seanslar limiti qancha?

Crashlytics Firebase loyihasi uchun kuniga 500 ming seansgacha bepul. Limit oshib ketganda, hisobotlar keyingi kungacha yangilanmaydi, ammo ma'lumot yig'ish to'xtamaydi.

Crashlytics uchun Firebase Analytics kerakmi?

Crashlytics Analytics-siz ishlaydi, ammo u bilan hisobotlarda Breadcrumbs — krashelardan oldin foydalanuvchining oxirgi 50 ta hodisasi bo'ladi. Ikkala modulni ulash tavsiya etiladi.

Crashlytics bir xil krashelarni qanday guruhlaydi?

Guruhlash stack trace-ning nazorat summasi bo'lgan fingerprint asosida amalga oshiriladi, istisno turlari va qator raqamlari kiradi. Bir xil fingerprint ga ega krashelar bitta Issue-ga tushadi.

Nega krashelar konsolda ko'rsatilmaydi?

Sozlamalarni tekshiring: google-services.json fayli, build.gradle da crashlytics plaginining mavjudligi, konsolda versiya bo'yicha filtrlashning yo'qligi va litsenziya shartnomasini qabul qilgan qurilmaning mavjudligi. Debug faqat release qurilmalarida ishlaydi.

Crashlytics-ga halokatli bo'lmagan xatolarni yuborish mumkinmi?

Ha, halokatli bo'lmagan istisnolar uchun recordException() dan foydalaning. Bunday hisobotlar ilova ishini to'xtatmaydi, ammo konsolda sodir bo'lish soni va to'liq stack trace bilan ko'rsatiladi.

Xulosa

  • Firebase Crashlytics — loyiha uchun kuniga 500 ming seans limiti bilan krashelarni yig'ish va tahlil qilish uchun bepul xizmat.
  • SDK ikkala mobil platformada barcha turdagi nosozliklarni tutib oladi: halokatli istisnolar, ANR, OS signallari va OOM.
  • Har bir hisobotda stack trace, qurilma holati, ilova versiyasi va krashelardan oldin 50 ta analitik hodisa mavjud.
  • Integratsiya stacklarni to'g'ri deobfuskatsiya qilish uchun Gradle-da google-services va crashlytics plaginini talab qiladi.
  • Issues bir xil krashelarni stack imzosiga ko'ra guruhlaydi, ta'sirlangan foydalanuvchilar soniga ko'ra prioritetlashtiradi.
  • Shaxsiy kalitlar va loglar hisobotni kontekst bilan boyitish imkonini beradi — obuna statusi, oxirgi ekran, krashelardan oldingi qadamlar.
  • CI/CD bilan Crashlytics API orqali integratsiya crash-free foizi chegaradan pastga tushganda joylashtirishni bloklash imkonini beradi.

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing