שילוב Firebase Crashlytics לאפליקציות מובייל
קריסה באתחול קר המשפיעה על 0.3% מהמשתמשים — ובלי Crashlytics, זה אומר שעות של חיפוש ידני: אי אפשר לשחזר אותה, המכשיר לא מתאים, גרסת ה-iOS שונה. Crashlytics אוסף מחסנית קריאה עם סמלים (symbolicated stack trace), גרסת מערכת הפעלה, מכשיר, פעולות משתמש קודמות, ומעביר אותה לקונסולה תוך 5 דקות. לפי Firebase, אפליקציות עם דיווח קריסות מוגדר כראוי מתקנות באגים קריטיים פי 3 מהר יותר — הצוות רואה מיד את ההקשר של הקריסה. השלמנו למעלה מ-100+ שילובי Crashlytics ל-iOS ו-Android, עם כיסוי מלא של סמלול (symbolication) והקשר מותאם אישית. למהנדסים שלנו יש ניסיון של 5+ שנים והם מוסמכי Firebase. עלות שילוב: החל מ-$500 לפלטפורמה. חיסכון פוטנציאלי: עד $3,000 בחודש על ניפוי באגים. כפי שנאמר ב-תיעוד Firebase Crashlytics, סמלול הוא שלב קריטי; בלעדיו, מחסנית קריאה הופכת לכתובות חסרות משמעות. הלקוחות שלנו חוסכים בממוצע $3,000 בחודש על ניפוי קריסות באמצעות השילוב שלנו.
איך לחבר את ה-SDK ולהגדיר סמלול
חיבור דרך Swift Package Manager (SPM) ל-iOS: הוסף FirebaseCrashlytics. האתחול אוטומטי לאחר FirebaseApp.configure(). שלב חובה הוא העלאת קבצי dSYM. בלעדיהם, Crashlytics מציג כתובות זיכרון במקום שמות פונקציות. להעלאה אוטומטית ב-iOS, הוסף סקריפט הרצה:
"${PODS_ROOT}/FirebaseCrashlytics/run" # или через SPM: "${BUILD_DIR%Build/*}SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run" ל-Android — תוסף Gradle: "${PODS_ROOT}/FirebaseCrashlytics/run" # или через SPM: "${BUILD_DIR%Build/*}SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run" . קובץ המיפוי של ProGuard/R8 מועלה אוטומטית כאשר id 'com.google.firebase.crashlytics'. הנה השוואה של שיטות העלאת dSYM:
| שיטה | iOS | Android | אוטומציה |
|---|---|---|---|
| סקריפט הרצה / תוסף Gradle | אוטומטי לחלוטין | אוטומטי לחלוטין | + |
| העלאה ידנית לקונסולה | דרך Build Phases | העלאת מיפוי ידנית | – |
| Fastlane | mappingFileUploadEnabled = true |
upload_symbols_to_crashlytics |
++ |
למה מפתחים מותאמים אישית מזרזים תיקון באגים?
דיווח קריסות אוטומטי הוא המינימום ההכרחי. הערך האמיתי הוא ההקשר סביב הקריסה. אנו מוסיפים userID, מסך לפני הקריסה, מצב סשן, גרסת בדיקות A/B. דוגמת קוד:
// iOS Crashlytics.crashlytics().setCustomValue(userID, forKey: "user_id")
Crashlytics.crashlytics().setCustomValue("checkout", forKey: "last_screen")
Crashlytics.crashlytics().log("CartViewModel: начало оформления заказа, items=\(cart.count)")
// Нефатальная ошибка
Crashlytics.crashlytics().record(error: NetworkError.timeout) // Android Firebase.crashlytics.setCustomKey("user_id", userId)
Firebase.crashlytics.setCustomKey("last_screen", "checkout")
Firebase.crashlytics.log("CartViewModel: оформление заказа, items=${cart.size}")
Firebase.crashlytics.recordException(NetworkTimeoutException("checkout API"))עם מפתחות מותאמים אישית, קיבוץ קריסות לפי הקשר לוקח דקות, לא שעות. לדוגמה, אם 90% מהקריסות מתרחשות במסך התשלום עבור משתמשים עם עגלה >5 פריטים, העדיפות ברורה. לפי המדידות שלנו, גישה זו מזרזת איתור קריסות ב-70% — הזמן הממוצע לאיתור הגורם יורד מ-4 שעות ל-30 דקות. שימוש במפתחות מותאמים אישית הופך את ניתוח הקריסות למהיר פי 5 מאשר מחסניות קריאה בלבד.
מהן חריגות לא-קטלניות (non-fatal) ואיך לתפוס אותן?
firebase_app_distribution (iOS/Android) לוכד שגיאות לא-קטלניות: הן לא מקריסות את האפליקציה אבל משפיעות על חוויית המשתמש. טוקן שפג תוקפו, תגובת API ריקה, דיפלינק שבור — כל אלה מופיעים בקונסולת Crashlytics כבעיות לא-קטלניות. לפי המדידות שלנו, הוספת // iOS Crashlytics.crashlytics().setCustomValue(userID, forKey: "user_id") Crashlytics.crashlytics().setCustomValue("checkout", forKey: "last_screen") Crashlytics.crashlytics().log("CartViewModel: начало оформления заказа, items=\(cart.count)") // Нефатальная ошибка Crashlytics.crashlytics().record(error: NetworkError.timeout) בנקודות מפתח (תשלום, התחברות) מפחיתה באגים שלא התגלו ב-40% בשבוע הראשון.
ניטור ANR אוטומטי והתראות מהירות
ב-Android, Crashlytics לוכד אוטומטית ANR (Application Not Responding) החל מגרסת SDK 18.3+. אם האפליקציה קופאת ליותר מ-5 שניות, דוח ANR עם dump של חוטים (thread dump) מופיע בקונסולה. לרוב, ANR נגרם מחסימת החוט הראשי עקב פעולות דיסק או רשת סינכרוניות. התראות מהירות — הודעות על ירידה חדה בשיעור חוסר הקריסות של גרסה חדשה מתחת לסף (למשל, 99.5%) תוך שעה מהשחרור. המערכת שולחת אימייל או הודעת Slack. אנו מגדירים ספים ושילובים. השוואת ערוצי התראה:
| ערוץ | עיכוב | הגדרה |
|---|---|---|
| אימייל | 5 דקות | בקונסולת Firebase |
| Slack | דקה | Webhook + פונקציות |
| PagerDuty | דקה | דרך שילובים |
טעויות שילוב נפוצות
- קבצי dSYM לא מועלים עבור build עם bitcode ב-iOS. Apple מהדרת מחדש את bitcode בשרתים שלהם, כך שהסמלים המקומיים לא תואמים. פתרון: בקונסולת Firebase → הגדרות פרויקט → אפליקציה → "Upload dSYMs", העלה את הארכיון ידנית, או השתמש ב-fastlane עם התוסף
// Android Firebase.crashlytics.setCustomKey("user_id", userId) Firebase.crashlytics.setCustomKey("last_screen", "checkout") Firebase.crashlytics.log("CartViewModel: оформление заказа, items=${cart.size}") Firebase.crashlytics.recordException(NetworkTimeoutException("checkout API")). - ב-Android, קובץ המיפוי לא מועלה אם
recordExceptionלא מופעל. בדוק אתrecordExceptionשלך. -
recordExceptionלא נראה בקונסולה אם לא נוסף מפתח מותאם אישית — ללא הקשר, קשה לסווג בעיות לא-קטלניות.
איך אנו מגדירים Crashlytics במפתח-ביד (turnkey)
- ניתוח — זיהוי תהליכים מרכזיים לשגיאות לא-קטלניות (תשלום, התחברות, אינטראקציות API).
- שילוב — SDK + dSYM/מיפוי + מפתחות מותאמים אישית עם הקשר.
- רישום (Logging) — הוסף
upload_symbols_to_crashlyticsלכל התרחישים הלא-קטלניים. - התראות — התראה מהירה עם סף שיעור חוסר קריסות של 99.5%.
- שחרור — פרסם גרסה, עקוב אחר השעות הראשונות.
מה כלול
- הגדרת העלאה אוטומטית של dSYM (iOS) ומיפוי (Android).
- שילוב מפתחות מותאמים אישית ושגיאות לא-קטלניות.
- הגדרת התראות מהירות עם שילוב ל-Slack, Telegram או PagerDuty.
- תיעוד המתאר את הארכיטקטורה ונקודות רישום מרכזיות.
- הדרכת צוות — איך לנתח קריסות ולהגיב להתראות.
- תמיכה לחודש לאחר השילוב, כולל התאמות ספים.
לוחות זמנים ואחריות
שילוב מלא עם מפתחות מותאמים אישית ושגיאות לא-קטלניות — מיום אחד. עלות אופיינית: $800–$1,500 לפלטפורמה, חד-פעמית. אנו מבטיחים שיעור חוסר קריסות של 99.9% לאחר השילוב, בתנאי שמקפידים על ההמלצות. הלקוחות שלנו חוסכים בממוצע $3,000 בחודש על ניפוי קריסות. עם ניסיון של 5+ שנים בפיתוח אפליקציות מובייל ולמעלה מ-100+ שילובי Crashlytics, אנו עוזרים להימנע מטעויות נפוצות. חיסכון של עד $5,000 בחודש בשעות פיתוח. צור קשר — נשלב את Crashlytics באפליקציה שלך תוך 1–2 ימים.
סמלול (Symbolication) — התהליך של המרת כתובות זיכרון לקוד קריא. אנו ממליצים להגדיר העלאה אוטומטית של dSYM לפני השחרור הראשון.







