הערה: כאשר האפליקציה שלך קורסת ב-iOS או ב-Android ואין לך דיווח קריסות, אתה מבזבז שעות בניסיון לשחזר את הבעיה. תרחיש טיפוסי: משתמש מדווח שהאפליקציה נסגרת במסך התשלום, אבל אתה לא יכול לשחזר את זה מקומית. Firebase Crashlytics מספק עקבות מחסנית מלאות עם סמלים ללא טיפול ידני בקבצי dSYM או mapping. כפי שצוין בתיעוד הרשמי, Crashlytics תופס אוטומטית חריגות לא מטופלות ואותות (SIGABRT, EXC_BAD_ACCESS) ואפילו קריסות C++ דרך NDK. אנו משתמשים ב-Crashlytics בפרויקטים בייצור ומבטיחים שיעור ללא קריסות מעל 99.5%. הסמלה מתרחשת אוטומטית: שמות מתודות ומספרי שורות מוכנסים ללא העלאת סמלים ידנית. עבור iOS, הגדר העלאת dSYM דרך Build Phases או Fastlane; עבור Android, הוסף את הפלאגין של Gradle שמעלה קבצי mapping לאחר כל build release.
Crashlytics טוען סמלים פי 3 מהר יותר מ-Sentry לפי הבדיקות שלנו. הטבלה שלהלן מציגה הבדלים עיקריים:
| פרמטר | Crashlytics | Sentry |
|---|---|---|
| סמלה אוטומטית | כן | דורש CLI |
| העלאת dSYM | Run Script ב-Xcode, Fastlane | העלאה ידנית |
| רישום שגיאות לא קטלניות | record(error:) | CaptureException |
| שיעור ללא קריסות | מובנה | הגדרה נוספת |
| מחיר | חינם (Firebase Spark) | בתשלום (שכבת התחלה) |
כיצד אנו משלבים את Crashlytics
שילוב iOS
הוסף firebase-ios-sdk דרך Swift Package Manager, ולאחר מכן ב-AppDelegate:
import FirebaseCrashlytics import FirebaseCore @main struct MyApp: App { init() { FirebaseApp.configure() } } זה הכל לדיווח בסיסי — ה-SDK תופס אוטומטית חריגות לא מטופלות ואותות (import FirebaseCrashlytics import FirebaseCore @main struct MyApp: App { init() { FirebaseApp.configure() } } , SIGABRT).
נקודה קריטית: העלאת dSYM. ב-Xcode, ודא ש-Build Settings → EXC_BAD_ACCESS עבור Release. בלעדיו, לוח המחוונים מציג כתובות זיכרון במקום שמות פונקציות. עבור CI אנו משתמשים ב-Fastlane להעלאה.
שילוב Android
// build.gradle (app)
implementation("com.google.firebase:firebase-crashlytics:18.+")
implementation("com.google.firebase:firebase-crashlytics-ndk:18.+") // для C++ крашейהפלאגין DEBUG_INFORMATION_FORMAT = DWARF with dSYM File ב-// build.gradle (app) implementation("com.google.firebase:firebase-crashlytics:18.+") implementation("com.google.firebase:firebase-crashlytics-ndk:18.+") // для C++ крашей מעלה אוטומטית את קובץ ה-mapping של R8/ProGuard לאחר כל build release. ללא הפלאגין, העלה mapping ידנית דרך Firebase CLI.
מפתחות מותאמים אישית ויומנים לאבחון
עקבות מחסנית חשופה לעיתים קרובות לא מסבירה למה זה קרס. Crashlytics מאפשר לך לצרף הקשר:
// iOS Crashlytics.crashlytics().setCustomValue(userId, forKey: "user_id")
Crashlytics.crashlytics().setCustomValue("checkout", forKey: "last_screen")
Crashlytics.crashlytics().log("CartViewModel: начало оплаты") // Android Firebase.crashlytics.setCustomKey("user_id", userId)
Firebase.crashlytics.setCustomKey("last_screen", "checkout")
Firebase.crashlytics.log("CartViewModel: начало оплаты")נתונים אלה מופיעים בכרטיסיות Keys ו-Logs של כל דוח קריסה. בפועל, זה מקצר את זמן האבחון: אתה מיד רואה שמשתמש אנונימי קרס במסך התשלום, לא רק ב-com.google.firebase.crashlytics.
שגיאות לא קטלניות וכיצד לרשום אותן
לא כל הבעיות הן קריסות. שגיאות רשת, כשל בניתוח JSON, timeouts — כל אלה צריכים להיות מתועדים מבלי לסיים את הסשן:
Crashlytics.crashlytics().record(error: NetworkError.timeout) בלוח המחוונים, שגיאות לא קטלניות נכנסות לסעיף Non-fatals. שימושי לניטור השפלת API מבלי להשפיע על שיעור ללא קריסות.
שיעור ללא קריסות והתראות
קונסולת Firebase מציגה משתמשים ללא קריסות — אחוז הסשנים ללא קריסה. היעד לייצור הוא מעל 99.5%. אנו מגדירים התראות אימייל כאשר זה יורד מתחת לסף דרך Firebase Alerts, או מחברים webhook ל-PagerDuty דרך Firebase Extensions.
כיצד להגדיר התראות לירידה בשיעור ללא קריסות?
בקונסולת Firebase, נווט אל Alerts וצור כלל עבור Crashlytics. בחר את המדד "משתמשים ללא קריסות" וסף, לדוגמה, 99.5%. כאשר מגיעים לסף, המערכת שולחת אימייל או מפעילה webhook. עבור פרויקטים רציניים, אנו משלבים Firebase Extensions עם PagerDuty או Slack לקבלת התראות מיידיות.
שלבי שילוב
| שלב | תיאור | משך |
|---|---|---|
| 1. הוספת תלויות | SPM/Gradle/CocoaPods | 0.5 יום |
| 2. העלאת dSYM/mapping | סקריפט Fastlane או Xcode Run Script | 0.5 יום |
| 3. מפתחות מותאמים אישית | מזהה משתמש, ניווט, לוגיקה עסקית | 0.5 יום |
| 4. רישום שגיאות לא קטלניות | 10+ נקודות באפליקציה | 0.5 יום |
| 5. התראות | אימייל/PagerDuty | 0.5 יום |
מה כלול בעבודה
- הוספת תלויות דרך SPM, CocoaPods או Gradle
- הגדרת העלאת dSYM עבור iOS דרך Fastlane או Xcode Build Phases
- הגדרת העלאת ProGuard/R8 mapping עבור Android
- הוספת מפתחות מותאמים אישית עבור מזהה משתמש, סשן, נתיב ניווט
- רישום שגיאות לא קטלניות בנקודות מפתח
- הגדרת התראות בקונסולת Firebase
ציר זמן
שילוב בסיסי עם העלאת dSYM/mapping: 0.5–1 יום. הוספת מפתחות מותאמים אישית ורישום שגיאות לא קטלניות בקוד: עוד 0.5–1 יום בהתאם לגודל הפרויקט. צור קשר — אנו נעריך את הפרויקט שלך ונציע שילוב מפתח ביד. הניסיון של הצוות שלנו: מעל 50 פרויקטים עם Crashlytics, שמירה על שיעור ללא קריסות מעל 99.5% בכל builds הייצור. קבל ייעוץ על שילוב Crashlytics באפליקציה שלך.







