במדריך המהיר הזה נסביר איך להגדיר את Firebase Crashlytics באפליקציה באמצעות Firebase Crashlytics SDK, כדי שתוכלו לקבל דוחות מקיפים על קריסות במסוף Firebase.
כדי להגדיר את Crashlytics, צריך לבצע משימות גם במסוף Firebase וגם בסביבת הפיתוח המשולבת (IDE) (למשל, הוספת קובץ תצורה של Firebase ו-SDK של Crashlytics). כדי לסיים את ההגדרה, תצטרכו לאלץ קריסה לצורך בדיקה כדי לשלוח את דוח הקריסה הראשון ל-Firebase.
לפני שמתחילים
אם עדיין לא עשיתם זאת, מוסיפים את Firebase לפרויקט ב-Apple. אם אין לכם אפליקציה ל-Apple, תוכלו להוריד אפליקציה לדוגמה.
מומלץ: כדי לקבל באופן אוטומטי יומנים של נתיבי ניווט כדי להבין את פעולות המשתמשים המובילות לקריסה, אירוע לא חמור או ANR, צריך להפעיל את Google Analytics בפרויקט Firebase.
אם Google Analytics לא מופעל בפרויקט הקיים ב-Firebase, תוכלו להפעיל אותו בכרטיסייה Integrations (שילובים) בקטע
במסוף > Project settingsFirebase. אם אתם יוצרים פרויקט חדש ב-Firebase, צריך להפעיל את Google Analytics במהלך תהליך יצירת הפרויקט.
לתשומת ליבכם: יומני נתיב הניווט זמינים לכל פלטפורמות Apple שנתמכות על ידי Crashlytics, מלבד watchOS.
שלב 1: מוסיפים את ה-SDK של Crashlytics לאפליקציה
אפשר להשתמש ב-Swift Package Manager כדי להתקין ולנהל יחסי תלות של Firebase.
- ב-Xcode, כשפרויקט האפליקציה פתוח, עוברים אל קובץ > הוספת חבילות.
- כשמופיעה בקשה, מוסיפים את מאגר ה-SDK של מוצרי הפלטפורמה של Firebase של Apple:
- בוחרים את הספרייה Crashlytics.
- כדי ליהנות מהיתרונות של יומני נתיבי הניווט, צריך גם להוסיף לאפליקציה את Firebase SDK for Google Analytics. חשוב לוודא ש-Google Analytics מופעל בפרויקט ב-Firebase.
- מוסיפים את הדגל
-ObjC
לקטע סימונים של מקשר אחר בהגדרות ה-build של היעד. - (macOS בלבד) ב-
Info.plist
, מוסיפים את המפתחNSApplicationCrashOnExceptions
ומגדירים אותו כ-YES
. - בסיום, Xcode יתחיל לפתור את יחסי התלות ולהוריד אותם באופן אוטומטי ברקע.
https://github.com/firebase/firebase-ios-sdk.git
לאחר מכן, מגדירים את המודול של Firebase:
מייבאים את מודול Firebase במבנה
App
או מה-UIApplicationDelegate
:Swift
import Firebase
Objective-C
@import Firebase;
מגדירים מופע משותף של
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 באופן אוטומטי, לעבד אותם ולהעלות את הקבצים בכל פעם שיוצרים את האפליקציה.
פותחים את סביבת העבודה של הפרויקט ב-Xcode ובוחרים את קובץ הפרויקט בתפריט הניווט הימני.
ברשימה TARGETS, בוחרים את יעד ה-build הראשי.
לוחצים על הכרטיסייה Build Settings ומבצעים את השלבים הבאים כדי ש-Xcode ייצור קובצי dSYM לגרסאות ה-build.
לוחצים על הכול ומחפשים את
debug information format
.מגדירים את Debug Information Format לערך
DWARF with dSYM File
לכל סוגי ה-build.
לוחצים על הכרטיסייה Build Phases ומבצעים את השלבים הבאים כדי ש-Xcode יוכל לעבד את קובצי ה-dSYM ולהעלות את הקבצים.
לוחצים על
> New Run Script Phase.צריך לוודא ששלב Run Script החדש הוא שלב ה-build האחרון בפרויקט. אחרת, Crashlytics לא יוכל לעבד כראוי קובצי dSYM.
מרחיבים את הקטע החדש הרצת סקריפט.
בשדה הסקריפט (שנמצא מתחת לתווית Shell), מוסיפים את סקריפט ההפעלה הבא.
הסקריפט הזה מעבד את קובצי ה-dSYM של הפרויקט ומעלה את הקבצים אל Crashlytics.
"${BUILD_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"
בקטע קובצי קלט מוסיפים את הנתיבים של המיקומים של הקבצים הבאים:
${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 באופן ידני), כדאי לעיין במאמר קבלת דוחות קריסה שעברו ערפול קוד (deobfuscated).
שלב 3: מאלצים קריסה לצורך בדיקה כדי לסיים את ההגדרה
כדי לסיים את ההגדרה של Crashlytics ולראות נתונים ראשוניים בלוח הבקרה Crashlytics במסוף Firebase, צריך לאלץ קריסה לצורך בדיקה.
מוסיפים לאפליקציה קוד שבעזרתו אפשר לאלץ קריסה לצורך בדיקה.
אפשר להשתמש בקוד הבא כדי להוסיף לאפליקציה לחצן שגורם לקריסה כשלוחצים עליו. הלחצן מסומן בתווית 'בדיקת קריסה'.
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
פיתוח והרצה של האפליקציה ב-Xcode כשמתקן הבאגים של Xcode מנותק.
כדי ליצור את האפליקציה במכשיר בדיקה או בסימולציה, לוחצים על
Build ואז מריצים את הסכמה הנוכחית.ממתינים עד שהאפליקציה פועלת, ואז לוחצים על Crashlytics.
Stop running the scheme or action כדי לסגור את המופע הראשוני של האפליקציה. המופע הראשוני הזה כלל את הכלי לניפוי באגים שמפריע ל-
מפעילים את קריסת הבדיקה כדי לשלוח את דוח הקריסה הראשון של האפליקציה:
פותחים את האפליקציה ממסך הבית של מכשיר הבדיקה או הסימולטור.
באפליקציה, לוחצים על הלחצן Test Crash (בדיקת קריסה) שהוספתם באמצעות הקוד שלמעלה.
אחרי שהאפליקציה קורסת, מריצים אותו שוב מ-Xcode כדי שהאפליקציה תוכל לשלוח את דוח הקריסה ל-Firebase.
עוברים אל מרכז הבקרה של Crashlytics במסוף Firebase כדי לראות את קריסה של הבדיקה.
אם רעננתם את המסוף ועדיין לא ראיתם את קריסת הבדיקה אחרי חמש דקות, הפעילו את יומני ניפוי הבאגים כדי לראות אם האפליקציה שולחת דוחות קריסה.
וזהו! Crashlytics עוקב עכשיו אחרי האפליקציה שלך כדי לזהות קריסות. בלוח הבקרה של Crashlytics תוכלו להציג ולחקור את כל הדוחות והנתונים הסטטיסטיים.
השלבים הבאים
- התאמה אישית של ההגדרה של דוח הקריסה: אפשר להוסיף דיווח על הסכמה, יומנים, מפתחות ומעקב אחרי שגיאות לא קטלניות.