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


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

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

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

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

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

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

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

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

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

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

  1. ב-Xcode, כשפרויקט האפליקציה פתוח, עוברים אל קובץ > הוספת חבילות.
  2. כשמופיעה בקשה, מוסיפים את המאגר של Firebase SDK לפלטפורמות Apple:
  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 (דגלים אחרים של קישור) בהגדרות ה-build של היעד.
  7. (macOS בלבד) ב-Info.plist, מוסיפים את המפתח NSApplicationCrashOnExceptions ומגדירים אותו כ-YES.
  8. בסיום, Xcode יתחיל לפתור את יחסי התלות ולהוריד אותם באופן אוטומטי ברקע.

בשלב הבא מגדירים את המודול של Firebase:

  1. מייבאים את מודול Firebase ב-struct‏ App או ב-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 צריך את קובצי ה-debug symbol (dSYM) של הפרויקט. בשלבים הבאים מוסבר איך להגדיר את Xcode לייצור קובצי dSYM באופן אוטומטי, לעבד אותם ולהעלות את הקבצים בכל פעם שיוצרים את האפליקציה.

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

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

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

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

    2. מגדירים את Debug Information Format לערך DWARF with dSYM File לכל סוגי ה-build.

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

    1. לוחצים על > New Run Script Phase.

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

    2. מרחיבים את הקטע החדש הרצת סקריפט.

    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)

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

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

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

  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. פיתוח והרצה של האפליקציה ב-Xcode כשמתקן הבאגים של Xcode מנותק.

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

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

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

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

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

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

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

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


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

השלבים הבאים