Firebase Crashlytics — τι είναι, crashes και διάγνωση βλαβών

Συγγραφέας: IT Sectr Δημοσιεύτηκε: 2026-04-27 Χρόνος ανάγνωσης: 10 λεπ

Το Firebase Crashlytics είναι μια υπηρεσία Google για τη συλλογή, ομαδοποίηση και ανάλυση σφαλμάτων εφαρμογών κινητού σε πραγματικό χρόνο. Το SDK αναχαιτίζει αυτόματα μη διαχειρισμένες εξαιρέσεις, crashes εγγενούς κώδικα και σήματα ANR, δημιουργώντας μια λεπτομερή αναφορά με ανίχνευση στοίβας, κατάσταση συσκευής και αρχεία καταγραφής. Σύμφωνα με τα δεδομένα του Google, 2026, το Crashlytics χρησιμοποιείται σε περισσότερες από 4 εκατομμύρια εφαρμογές παγκοσμίως. Η υπηρεσία παρέχεται δωρεάν με όριο 500 χιλιάδων συνεδριών την ημέρα ανά έργο.

Κύρια σημεία

  • Firebase Crashlytics — αυτόματη συλλογή crashes με δωρεάν τιμολόγηση έως 500 χιλιάδες συνεδρίες την ημέρα.
  • Το SDK αναχαιτίζει εξαιρέσεις Kotlin, Java, Swift, Objective-C, εγγενούς C/C++ και ANR σε Android.
  • Κάθε αναφορά περιέχει ανίχνευση στοίβας, έκδοση εφαρμογής, μοντέλο συσκευής και αρχεία καταγραφής χρήστη.
  • Το Crashlytics ομαδοποιεί πανομοιότυπα crashes ανά στοίβα και συχνότητα, εμφανίζοντας τον αριθμό των επηρεαζόμενων χρηστών.
  • Η υπηρεσία είναι ενσωματωμένη με το Analytics — μπορείτε να δείτε τη διαδρομή του χρήστη έως τη βλάβη στην ίδια διεπαφή.

Τι είναι το Firebase Crashlytics

Firebase Crashlytics είναι μια δωρεάν υπηρεσία Google για την παρακολούθηση της σταθερότητας εφαρμογών κινητού, που εξαγοράστηκε από την Google το 2017 μαζί με την εταιρεία Fabric. Το Crashlytics συλλέγει αυτόματα πληροφορίες για κάθε σφάλμα εφαρμογής, ομαδοποιεί πανομοιότυπα crashes βάσει της υπογραφής στοίβας και τα εμφανίζει στην κονσόλα Firebase με προτεραιοποίηση βάσει του αριθμού των επηρεαζόμενων χρηστών.

Ιστορία και εξέλιξη

Το Crashlytics ξεκίνησε το 2011 ως μέρος της πλατφόρμας Fabric και γρήγορα έγινε το de facto πρότυπο για αναφορά crashes στο iOS. Μετά την εξαγορά από την Google το 2017 έναντι εκτιμώμενων 2 δισεκατομμυρίων δολαρίων (ολόκληρο το Fabric), το Crashlytics ενσωματώθηκε στο Firebase SDK. Η έκδοση 18.0.0 (2021) πρόσθεσε υποστήριξη για Kotlin Multiplatform, και η έκδοση 19.0.0 (2024) — αυτόματη συλλογή ANR σε Android χωρίς πρόσθετη παραμετροποίηση. Σύμφωνα με δεδομένα της Google (2026), το Crashlytics επεξεργάζεται περισσότερα από 10 δισεκατομμύρια crashes μηνιαίως.

Δωρεάν όρια του Crashlytics

Crashlytics παρέχεται δωρεάν με όριο 500 χιλιάδων συνεδριών την ημέρα ανά έργο Firebase. Για τις περισσότερες εφαρμογές αυτό είναι αρκετό — σύμφωνα με δεδομένα της Google (2026), το 95% των έργων δεν υπερβαίνει το όριο. Σε περίπτωση υπέρβασης, η συλλογή δεδομένων δεν σταματά, αλλά οι αναφορές σταματούν να ενημερώνονται μέχρι την επόμενη ημέρα. Για έργα με υψηλό φορτίο, διατίθενται τα πακέτα Spark και Blaze της Firebase — το Crashlytics παραμένει δωρεάν και στα δύο πακέτα και το όριο συνεδριών υπολογίζεται ξεχωριστά.

Πώς το Crashlytics εντοπίζει και συλλέγει βλάβες

Ο μηχανισμός συλλογής του Crashlytics βασίζεται στην αναχαίτιση εξαιρέσεων σε επίπεδο πλατφόρμας και χρόνου εκτέλεσης. Σε Android, το SDK υλοποιεί έναν UncaughtExceptionHandler που αναχαιτίζει όλες τις μη διαχειρισμένες εξαιρέσεις Kotlin και Java. Σε iOS, το Crashlytics χρησιμοποιεί NSSetUncaughtExceptionHandler για Objective-C/Swift και τον δικό του χειριστή εξαιρέσεων Mach για crashes εγγενούς κώδικα.

Τύποι αναχαιτιζόμενων βλαβών

Το Crashlytics διακρίνει πέντε τύπους βλαβών: fatal (θανατηφόρα crashes), non-fatal (μη θανατηφόρες εξαιρέσεις που αποστέλλονται χειροκίνητα), ANR (Android — η εφαρμογή δεν ανταποκρίνεται), signal (σήματα OS — SIGSEGV, SIGABRT) και OOM (έλλειψη μνήμης σε iOS). Κάθε τύπος υποβάλλεται σε επεξεργασία από ξεχωριστό μηχανισμό και εμφανίζεται στην κονσόλα με αντίστοιχη ετικέτα.

Τύπος βλάβηςΠλατφόρμεςΕνεργοποιητής
FatalAndroid, iOSΜη διαχειρισμένη εξαίρεση
Non-fatalAndroid, iOSΧειροκίνητη κλήση Crashlytics.logException()
ANRAndroidΚαμία απόκριση > 5 δευτερόλεπτα
SignalAndroid, iOSΣήμα OS (SEGV, ABRT, BUS)
OOMiOSΈλλειψη μνήμης

Μορφή αναφοράς βλάβης

Κάθε αναφορά Crashlytics περιέχει εξαντλητικές πληροφορίες: πλήρη ανίχνευση στοίβας με ονόματα κλάσεων και αριθμούς γραμμών, έκδοση εφαρμογής (versionName + versionCode), μοντέλο συσκευής, έκδοση OS, ποσότητα ελεύθερης μνήμης, προσανατολισμό οθόνης και χρόνο από την εκκίνηση. Εάν το Firebase Analytics είναι συνδεδεμένο, η αναφορά περιλαμβάνει επίσης τη διαδρομή των τελευταίων 50 συμβάντων χρήστη πριν από τη βλάβη — αυτό είναι κρίσιμο για την αναπαραγωγή του crash.

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 σε έργο Android

Η σύνδεση του Crashlytics σε μια εφαρμογή Android απαιτεί την προσθήκη δύο εξαρτήσεων στο build.gradle και τη ρύθμιση του πρόσθετου Google Services. Το SDK ενεργοποιεί αυτόματα την αναφορά crashes κατά την αρχικοποίηση του Firebase χωρίς πρόσθετο κώδικα. Για τη σωστή λειτουργία απαιτούνται επίσης το πρόσθετο google-services και το αρχείο google-services.json από την κονσόλα Firebase.

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

Το πρόσθετο com.google.firebase.crashlytics εκτελεί δύο εργασίες: δημιουργεί ένα μοναδικό αναγνωριστικό build (build ID) για τη χαρτογράφηση συγκεχυμένων στοιβών και δημιουργεί αυτόματα πόρους για το Crashlytics SDK. Χωρίς το πρόσθετο, τα crashes θα επισημαίνονται ως "unmapped" — θα βλέπετε μόνο συγκεχυμένα ονόματα κλάσεων (a.b.c) χωρίς δυνατότητα εύρεσης του πηγαίου κώδικα. Το πρόσθετο προστίθεται στο root build.gradle και στο build.gradle της ενότητας εφαρμογής.

Έλεγχος ενσωμάτωσης

Για τη δοκιμή της ενσωμάτωσης Crashlytics χρησιμοποιείται η ειδική μέθοδος forceCrash(), η οποία δημιουργεί μια δοκιμαστική εξαίρεση. Σε εκδόσεις παραγωγής, αυτή η μέθοδος δεν είναι διαθέσιμη. Μετά την εκτέλεση του δοκιμαστικού crash, η αναφορά εμφανίζεται στην κονσόλα Firebase εντός 1-5 λεπτών. Εάν η αναφορά δεν εμφανίζεται — ελέγξτε εάν το google-services.json αντιστοιχεί στο πακέτο της εφαρμογής και εάν δεν υπάρχουν σημαίες στο AndroidManifest που απενεργοποιούν τη συλλογή δεδομένων.

Ανάλυση crashes και ομαδοποίηση αναφορών

Η κονσόλα Crashlytics παρέχει δύο επίπεδα προβολής: λίστα όλων των crashes (Issues) με ομαδοποίηση ανά τύπο βλάβης και λεπτομερή αναφορά για κάθε Issue με ανίχνευση, στατιστικά και δεδομένα χρήστη. Κάθε Issue συνδυάζει όλα τα crashes με την ίδια υπογραφή — τον ίδιο τύπο εξαίρεσης και αντίστοιχη ανίχνευση στοίβας.

Issues και ομαδοποίηση

Η ομαδοποίηση crashes — το βασικό χαρακτηριστικό του Crashlytics. Αντί να εμφανίζει χιλιάδες μεμονωμένα crashes, η υπηρεσία τα συνδυάζει σε Issues βάσει fingerprint — του αθροίσματος ελέγχου της ανίχνευσης στοίβας. Ένα Issue μπορεί να περιέχει από 1 έως αρκετά εκατομμύρια crashes. Για κάθε Issue εμφανίζονται: ο αριθμός των θανατηφόρων περιπτώσεων, ο αριθμός των μοναδικών χρηστών, η έκδοση εφαρμογής στην οποία εμφανίστηκε το crash και το ποσοστό χρηστών που αντιμετώπισαν το πρόβλημα.

Σύμφωνα με δεδομένα της Google (2026), κατά μέσο όρο το 20% των Issues προκαλεί το 80% όλων των θανατηφόρων crashes της εφαρμογής (αρχή Pareto). Το Crashlytics ταξινομεί αυτόματα τα Issues κατά σοβαρότητα — όσο περισσότεροι χρήστες επηρεάζονται, τόσο υψηλότερη είναι η προτεραιότητα. Αυτό επιτρέπει στον προγραμματιστή να διορθώνει πρώτα τα πιο μαζικά προβλήματα.

Στατιστικά ανά έκδοση

Crashlytics παρακολουθεί τη σταθερότητα κάθε έκδοσης εφαρμογής ξεχωριστά. Το γράφημα crash-free users δείχνει το ποσοστό των χρηστών που δεν αντιμετώπισαν θανατηφόρο crash σε κάθε έκδοση. Εάν κατά την ενημέρωση το ποσοστό πέσει κάτω από το όριο (προεπιλογή 99%), το Crashlytics στέλνει ειδοποίηση μέσω email και στην κονσόλα Firebase. Αυτό επιτρέπει τη γρήγορη ανάκληση της προβληματικής έκδοσης ή την κυκλοφορία hotfix.

Προσαρμοσμένα κλειδιά, αρχεία καταγραφής και Breadcrumbs

Crashlytics παρέχει τρεις μηχανισμούς για τον εμπλουτισμό αναφορών με περιεχόμενο: προσαρμοσμένα κλειδιά (keys) για δομημένα δεδομένα, αρχεία καταγραφής (logs) για ανίχνευση κειμένου και Breadcrumbs από το Analytics για τη διαδρομή χρήστη. Και οι τρεις τύποι δεδομένων επισυνάπτονται στην αναφορά crash και είναι ορατοί στη λεπτομερή κάρτα της.

Προσαρμοσμένα κλειδιά

Custom Keys — είναι ζεύγη "κλειδί-τιμή" που μεταδίδονται μαζί με κάθε crash. Μέγιστο 64 κλειδιά ανά εφαρμογή, κάθε κλειδί — συμβολοσειρά μήκους έως 1024 χαρακτήρων. Τα κλειδιά είναι βολικά για τη σήμανση της κατάστασης της εφαρμογής: επίπεδο συνδρομής, κατάσταση εξουσιοδότησης, τελευταία οθόνη, εάν το VPN είναι ενεργοποιημένο. Οι τιμές αντικαθίστανται — ένα νέο κλειδί με το ίδιο όνομα αντικαθιστά το παλιό.

Καταγραφή συμβάντων

Custom Logs — είναι μηνύματα κειμένου που το Crashlytics αποθηκεύει σε κυκλικό buffer μεγέθους 64 KB. Τα αρχεία καταγραφής επισυνάπτονται αυτόματα στο επόμενο crash. Εάν δεν συμβεί crash — τα αρχεία καταγραφής δεν μεταδίδονται στον διακομιστή (δεν καταναλώνουν κίνηση). Η καταγραφή χρησιμοποιείται για την καταγραφή των βημάτων του χρήστη πριν από τη βλάβη: "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)
        }
    }
}

Breadcrumbs από το Analytics

Εάν το Firebase Analytics είναι συνδεδεμένο στο έργο, το Crashlytics λαμβάνει αυτόματα Breadcrumbs — τα τελευταία 50 αναλυτικά συμβάντα πριν από το crash. Κάθε breadcrumb περιέχει το όνομα του συμβάντος και τις παραμέτρους του. Αυτό επιτρέπει την ανακατασκευή της ακριβούς ακολουθίας ενεργειών που οδήγησαν στη βλάβη: ο χρήστης άνοιξε την οθόνη → πρόσθεσε προϊόν → προχώρησε σε πληρωμή → συνέβη crash. Τα Breadcrumbs εμφανίζονται στην κάρτα Issue σε ξεχωριστή καρτέλα "Logs".

Βέλτιστες πρακτικές εργασίας με βλάβες

Crashlytics είναι πιο αποτελεσματικό με τη σωστή διαμόρφωση περιεχομένου και διαδικασίας επεξεργασίας Issues. Η πρακτική δείχνει ότι οι ομάδες που εφάρμοσαν κανονισμούς εργασίας με crashes μειώνουν τον χρόνο επιδιόρθωσης κρίσιμων σφαλμάτων κατά 60% (δεδομένα Google, 2026).

Προτεραιοποίηση Issues

Δεν είναι όλα τα crashes εξίσου σημαντικά. Η προτεραιοποίηση βάσει αριθμού χρηστών και συχνότητας εμφάνισης βοηθά στην εστίαση στα πιο κρίσιμα προβλήματα. Κανόνας: διορθώνετε Issues που επηρεάζουν περισσότερο από 0.1% των χρηστών εντός 24 ωρών. Issues με μεμονωμένες εμφανίσεις (< 0.01%) μπορούν να αναβληθούν μέχρι την επόμενη προγραμματισμένη έκδοση. Το Crashlytics επισημαίνει αυτόματα υποτροπές — Issues που διορθώθηκαν αλλά εμφανίστηκαν ξανά σε νέα έκδοση.

Ενσωμάτωση με CI/CD

Το Crashlytics API επιτρέπει την ενσωμάτωση αναφορών σφαλμάτων στο pipeline CI/CD μέσω REST API ή Firebase CLI. Σε κάθε νέα έκδοση, μπορείτε να ελέγχετε αυτόματα εάν το ποσοστό crash-free users υπερβαίνει το όριο. Εάν το όριο ξεπεραστεί — το CI/CD αποκλείει την ανάπτυξη και στέλνει ειδοποίηση στην ομάδα. Το Firebase CLI υποστηρίζει την εντολή firebase crashlytics:builds:upload για τη μεταφόρτωση αρχείων αντιστοίχισης ProGuard/R8 — χωρίς αυτά, οι στοίβες θα είναι δυσανάγνωστες.

Σύμφωνα με δεδομένα της Google (2026), οι εφαρμογές που χρησιμοποιούν αυτόματο έλεγχο ορίων crash-free στο CI/CD κυκλοφορούν 40% λιγότερες υποτροπές σε παραγωγή. Συνιστώμενο όριο: crash-free users >= 99.5% για κρίσιμες εκδόσεις και >= 99.0% για συνήθεις εκδόσεις.

Συχνές ερωτήσεις

Ποιο είναι το όριο δωρεάν συνεδριών στο Crashlytics;

Crashlytics είναι δωρεάν έως 500 χιλιάδες συνεδρίες την ημέρα ανά έργο Firebase. Σε περίπτωση υπέρβασης, οι αναφορές σταματούν να ενημερώνονται μέχρι την επόμενη ημέρα, αλλά η συλλογή δεδομένων δεν σταματά.

Απαιτείται το Firebase Analytics για το Crashlytics;

Crashlytics λειτουργεί χωρίς Analytics, αλλά με αυτό οι αναφορές περιέχουν Breadcrumbs — τα τελευταία 50 συμβάντα χρήστη πριν από το crash. Συνιστάται η σύνδεση και των δύο μονάδων.

Πώς ομαδοποιεί το Crashlytics πανομοιότυπα crashes;

Ομαδοποίηση γίνεται βάσει fingerprint — αθροίσματος ελέγχου της ανίχνευσης στοίβας, συμπεριλαμβανομένων των τύπων εξαιρέσεων και αριθμών γραμμών. Τα crashes με ίδιο fingerprint καταλήγουν σε ένα Issue.

Γιατί δεν εμφανίζεται το crash στην κονσόλα;

Ελέγξτε τις ρυθμίσεις: το αρχείο google-services.json, την ύπαρξη του πρόσθετου crashlytics στο build.gradle, την απουσία φιλτραρίσματος ανά έκδοση στην κονσόλα και την ύπαρξη build που έχει αποδεχτεί τη συμφωνία άδειας χρήσης. Ο εντοπισμός σφαλμάτων λειτουργεί μόνο σε εκδόσεις release.

Μπορούν να σταλούν μη θανατηφόρα σφάλματα στο Crashlytics;

Ναι, χρησιμοποιήστε τη recordException() για μη θανατηφόρες εξαιρέσεις. Τέτοιες αναφορές δεν διακόπτουν τη λειτουργία της εφαρμογής, αλλά εμφανίζονται στην κονσόλα με μετρητή εμφανίσεων και πλήρη ανίχνευση στοίβας.

Περίληψη

  • Firebase Crashlytics — δωρεάν υπηρεσία συλλογής και ανάλυσης crashes με όριο 500 χιλιάδων συνεδριών την ημέρα ανά έργο.
  • Το SDK αναχαιτίζει όλους τους τύπους βλαβών: θανατηφόρες εξαιρέσεις, ANR, σήματα OS και OOM και στις δύο πλατφόρμες κινητού.
  • Κάθε αναφορά περιέχει ανίχνευση στοίβας, κατάσταση συσκευής, έκδοση εφαρμογής και έως 50 αναλυτικά συμβάντα πριν από το crash.
  • Η ενσωμάτωση απαιτεί πρόσθετα google-services και crashlytics στο Gradle για σωστή αποσυγχώνευση στοιβών.
  • Issues ομαδοποιούν πανομοιότυπα crashes βάσει υπογραφής στοίβας με προτεραιοποίηση βάσει αριθμού επηρεαζόμενων χρηστών.
  • Προσαρμοσμένα κλειδιά και αρχεία καταγραφής επιτρέπουν τον εμπλουτισμό της αναφοράς με περιεχόμενο — κατάσταση συνδρομής, τελευταία οθόνη, βήματα πριν από τη βλάβη.
  • Ενσωμάτωση με CI/CD μέσω Crashlytics API επιτρέπει τον αποκλεισμό ανάπτυξης όταν το ποσοστό crash-free πέσει κάτω από το όριο.

Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση

Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.

Συζήτηση έργου

Διαβάστε επίσης