תחילת העבודה עם Firebase Crashlytics


במדריך הזה מוסבר איך להגדיר את Firebase Crashlytics באפליקציה באמצעות Firebase Crashlytics SDK כדי לקבל דוחות מקיפים על קריסות ב-Firebase Console.

ההגדרה של Crashlytics דורשת ביצוע משימות גם במסוף Firebase וגם בסביבת הפיתוח המשולבת (IDE) שלכם (למשל, הוספה של קובץ הגדרות של Firebase ושל Crashlytics SDK). כדי לסיים את ההגדרה, צריך לגרום לקריסת בדיקה כדי לשלוח את דוח הקריסה הראשון ל-Firebase.

לפני שמתחילים

  1. אם עדיין לא עשיתם זאת, מוסיפים את Firebase לפרויקט Apple. אם אין לכם אפליקציה של Apple, אתם יכולים להוריד אפליקציה לדוגמה.

  2. מומלץ: כדי לקבל באופן אוטומטי יומני נתיב ולהבין את פעולות המשתמש שהובילו לקריסה, לאירוע לא קטלני או לאירוע ANR, צריך להפעיל את האפשרות Google Analytics בפרויקט Firebase.

    • אם בפרויקט הקיים שלכם ב-Firebase לא הפעלתם את Google Analytics, תוכלו להפעיל את Google Analytics דרך הכרטיסייה Integrations (שילובים) בקטע > Project settings (הגדרות הפרויקט) במסוף Firebase.

    • אם אתם יוצרים פרויקט חדש ב-Firebase, זכרו להפעיל את Google Analytics לפני שתסיימו ליצור את הפרויקט.

    הערה: יומני נתיבי מיקום זמינים לכל הפלטפורמות של אפל שנתמכות על ידי Crashlytics, מלבד watchOS.

שלב 1: מוסיפים את Crashlytics SDK לאפליקציה

משתמשים ב-Swift Package Manager כדי להתקין ולנהל יחסי תלות ב-Firebase.

  1. ב-Xcode, כשהפרויקט של האפליקציה פתוח, עוברים אל File > Add Packages (קובץ > הוספת חבילות).
  2. כשמוצגת בקשה, מוסיפים את מאגר Firebase Apple platforms SDK:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. בוחרים את הספרייה Crashlytics.
  5. כדי להשתמש ביומני נתיבי ניווט, צריך להוסיף לאפליקציה גם את Firebase SDK for Google Analytics. חשוב לוודא שGoogle Analytics מופעל בפרויקט Firebase.
  6. מוסיפים את הדגל -ObjC לקטע Other Linker Flags בהגדרות הבנייה של היעד.
  7. (macOS בלבד) בקובץ Info.plist, מוסיפים את המפתח NSApplicationCrashOnExceptions ומגדירים אותו לערך YES.
  8. אחרי שתסיימו, פלטפורמת Xcode תתחיל באופן אוטומטי לטפל ביחסי התלות ולהוריד אותם ברקע.

לאחר מכן מגדירים את מודול Firebase:

  1. מייבאים את מודול Firebase אל App struct או אל UIApplicationDelegate:

    Swift

    import Firebase

    Objective-C

    @import Firebase;
  2. מגדירים מופע משותף של FirebaseApp, בדרך כלל בשיטה application(_:didFinishLaunchingWithOptions:) של נציג האפליקציה:

    Swift

    // Use the Firebase library to configure APIs.
    FirebaseApp.configure()

    Objective-C

    // Use the Firebase library to configure APIs.
    [FIRApp configure];

שלב 2: הגדרת Xcode להעלאה אוטומטית של קובצי dSYM

כדי ליצור דוחות קריסה שקלים לקריאה, Crashlytics צריך את קובצי סמלי הניפוי באגים (dSYM) של הפרויקט. בשלבים הבאים מוסבר איך להגדיר את Xcode כך שיפיק באופן אוטומטי קובצי dSYM, יעבד אותם ויעלה את הקבצים בכל פעם שמבצעים build של האפליקציה.

  1. פותחים את סביבת העבודה של פרויקט Xcode ואז בוחרים את קובץ הפרויקט בחלונית הניווט הימנית.

  2. ברשימה TARGETS, בוחרים את יעד הבנייה הראשי.

  3. לוחצים על הכרטיסייה Build Settings (הגדרות בנייה) ופועלים לפי השלבים הבאים כדי ש-Xcode ייצור קובצי dSYM עבור הבנייה.

    1. לוחצים על הכול ומחפשים את debug information format.

    2. מגדירים את פורמט מידע הניפוי באגים ל-DWARF with dSYM File לכל סוגי הבנייה.

  4. לוחצים על הכרטיסייה Build Phases (שלבי בנייה) ומבצעים את השלבים הבאים כדי ש-Xcode יוכל לעבד את קובצי ה-dSYM ולהעלות אותם.

    1. לוחצים על > New Run Script Phase (שלב חדש של הפעלת תסריט).

      חשוב לוודא ששלב ה-Run Script החדש הזה הוא שלב הבנייה האחרון בפרויקט, אחרת Crashlytics לא יוכל לעבד את קובצי ה-dSYM בצורה תקינה.

    2. מרחיבים את הקטע החדש Run Script.

    3. בשדה התסריט (שנמצא מתחת לתווית Shell), מוסיפים את תסריט ההרצה הבא.

      הסקריפט הזה מעבד את קובצי ה-dSYM של הפרויקט ומעלה את הקבצים אל Crashlytics.

      "${BUILD_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"
    4. בקטע Input Files, מוסיפים את הנתיבים למיקומים של הקבצים הבאים:

      ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}
      ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}
      ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist
      $(TARGET_BUILD_DIR)/$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/GoogleService-Info.plist
      $(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)
      אם יש לכם ENABLE_USER_SCRIPT_SANDBOXING=YES ו-ENABLE_DEBUG_DYLIB=YES בהגדרות הבנייה של הפרויקט, צריך לכלול את השורות הבאות:
      ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}.debug.dylib

מידע מפורט יותר על קובצי dSYM ועל Crashlytics (כולל הוראות להעלאה ידנית של קובצי dSYM) זמין במאמר קבלת דוחות קריסה עם ביטול ההסתרה.

שלב 3: הפעלת קריסה של בדיקה כדי לסיים את ההגדרה

כדי לסיים את ההגדרה של Crashlytics ולראות נתונים ראשוניים בלוח הבקרה של Crashlytics ב-Firebase Console, צריך לגרום לקריסת בדיקה.

  1. מוסיפים לאפליקציה קוד שאפשר להשתמש בו כדי לגרום לקריסת בדיקה.

    אפשר להשתמש בקוד הבא כדי להוסיף לאפליקציה לחצן שגורם לקריסה כשלוחצים עליו. הלחצן מסומן בתווית 'בדיקת קריסה'.

    SwiftUI

    Button("Crash") {
      fatalError("Crash was triggered")
    }

    UIKit

    Swift

    import UIKit
    
    class ViewController: UIViewController {
      override func viewDidLoad() {
          super.viewDidLoad()
    
          // Do any additional setup after loading the view, typically from a nib.
    
          let button = UIButton(type: .roundedRect)
          button.frame = CGRect(x: 20, y: 50, width: 100, height: 30)
          button.setTitle("Test Crash", for: [])
          button.addTarget(self, action: #selector(self.crashButtonTapped(_:)), for: .touchUpInside)
          view.addSubview(button)
      }
    
      @IBAction func crashButtonTapped(_ sender: AnyObject) {
          let numbers = [0]
          let _ = numbers[1]
      }
    }

    Objective-C

    #import "ViewController.h"
    
    @implementation ViewController(void)viewDidLoad {
        [super viewDidLoad];
    
        // Do any additional setup after loading the view, typically from a nib.
    
        UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        button.frame = CGRectMake(20, 50, 100, 30);
        [button setTitle:@"Test Crash" forState:UIControlStateNormal];
        [button addTarget:self action:@selector(crashButtonTapped:)
            forControlEvents:UIControlEventTouchUpInside];
        [self.view addSubview:button];
    }
    
     (IBAction)crashButtonTapped:(id)sender {
        @[][1];
    }
    
    @end
  2. מבצעים Build ומריצים את האפליקציה ב-Xcode כשהמנפה באגים של Xcode מנותק.

    1. לוחצים על Build and then run the current scheme (בנייה והרצה של הסכימה הנוכחית) כדי לבנות את האפליקציה במכשיר בדיקה או בסימולטור.

    2. מחכים עד שהאפליקציה פועלת, ואז לוחצים על הפסקת ההרצה של הסכימה או הפעולה כדי לסגור את המופע הראשוני של האפליקציה. המופע הראשוני הזה כלל את מנפה הבאגים שמפריע ל-Crashlytics.

  3. כדי לשלוח את דוח הקריסה הראשון של האפליקציה, צריך לגרום לקריסה של האפליקציה במהלך הבדיקה:

    1. פותחים את האפליקציה ממסך הבית של מכשיר הבדיקה או הסימולטור.

    2. באפליקציה, לוחצים על הלחצן Test Crash (בדיקת קריסה) שהוספתם באמצעות הקוד שלמעלה.

    3. אחרי שהאפליקציה קורסת, מריצים אותה שוב מ-Xcode כדי שהיא תוכל לשלוח את דוח הקריסה ל-Firebase.

  4. עוברים אל מרכז הבקרה של Crashlytics במסוף Firebase כדי לראות את קריסת הבדיקה.

    אם רעננתם את המסוף והקריסה של הבדיקה עדיין לא מופיעה אחרי חמש דקות, צריך להפעיל את יומן ניפוי הבאגים כדי לבדוק אם האפליקציה שולחת דוחות קריסה.


זהו, סיימתם. Crashlytics עכשיו עוקב אחרי האפליקציה שלך כדי לזהות קריסות. בלוח הבקרה של Crashlytics אפשר לראות את כל הדוחות והנתונים הסטטיסטיים ולבדוק אותם.

השלבים הבאים