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


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

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

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

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

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

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

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

    שימו לב שיומני נתיבי ניווט זמינים עבור כל פלטפורמות Apple שנתמכות על ידי Crashlytics מלבד WatchOS.

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

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

  1. ב-Xcode, כשפרויקט האפליקציה פתוח, עוברים אל File > (קובץ >) הוספת חבילות.
  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 במבנה 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 (הגדרות Build) ולאחר מכן מבצעים את השלבים הבאים כדי Xcode מייצרת dSYM עבור גרסאות ה-build שלכם.

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

    2. יש להגדיר את Debug Information Format (פורמט המידע על ניפוי באגים) ל-DWARF with dSYM File בכל סוגי ה-build.

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

    1. לוחצים על > שלב הרצת סקריפט חדש.

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

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

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

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

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

      ${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 כל הדוחות והנתונים הסטטיסטיים.

השלבים הבאים