איך מתחילים להשתמש ב-Crashlytics ל-Unity

בחירת פלטפורמה: iOS+‎ Android Android NDK Flutter Unity


במדריך הזה מוסבר איך מתחילים להשתמש ב-Firebase Crashlytics בפרויקט Unity.

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

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

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

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

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

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

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

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

שימו לב: כשרושמים את פרויקט Unity בפרויקט Firebase, יכול להיות שכבר הורדתם את Firebase Unity SDK והוספתם את החבילות שמתוארות בשלבים הבאים.

  1. מורידים את Firebase Unity SDK ומחלצים את הקבצים למיקום נוח. ‫Firebase Unity SDK לא ספציפי לפלטפורמה.

  2. בפרויקט הפתוח ב-Unity, עוברים אל Assets (נכסים) > Import Package (ייבוא חבילה) > Custom Package (חבילה מותאמת אישית).

  3. מתוך ה-SDK שלא נפרס, בוחרים לייבא את Crashlytics SDK (FirebaseCrashlytics.unitypackage).

    כדי ליהנות מיומני נתיב, צריך גם להוסיף את Firebase SDK for Google Analytics לאפליקציה (FirebaseAnalytics.unitypackage). חשוב לוודא שGoogle Analytics מופעל בפרויקט Firebase.

  4. בחלון ייבוא חבילת Unity, לוחצים על ייבוא.

שלב 2: הפעלת Crashlytics

  1. יוצרים סקריפט חדש ב-C# ‎ ואז מוסיפים אותו ל-GameObject בסצנה.

    1. פותחים את הסצנה הראשונה ויוצרים GameObject ריק בשם CrashlyticsInitializer.

    2. לוחצים על Add Component (הוספת רכיב) ב-Inspector (כלי הבדיקה) של האובייקט החדש.

    3. בוחרים את הסקריפט CrashlyticsInit כדי להוסיף אותו לאובייקט CrashlyticsInitializer.

  2. מפעילים את Crashlytics בשיטה Start של הסקריפט:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    // Import Firebase and Crashlytics
    using Firebase;
    using Firebase.Crashlytics;
    
    public class CrashlyticsInit : MonoBehaviour {
        // Use this for initialization
        void Start () {
            // Initialize Firebase
            Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
                var dependencyStatus = task.Result;
                if (dependencyStatus == Firebase.DependencyStatus.Available)
                {
                    // Create and hold a reference to your FirebaseApp,
                    // where app is a Firebase.FirebaseApp property of your application class.
                    // Crashlytics will use the DefaultInstance, as well;
                    // this ensures that Crashlytics is initialized.
                    Firebase.FirebaseApp app = Firebase.FirebaseApp.DefaultInstance;
    
                    // When this property is set to true, Crashlytics will report all
                    // uncaught exceptions as fatal events. This is the recommended behavior.
                    Crashlytics.ReportUncaughtExceptionsAsFatal = true;
    
                    // Set a flag here for indicating that your project is ready to use Firebase.
                }
                else
                {
                    UnityEngine.Debug.LogError(System.String.Format(
                      "Could not resolve all Firebase dependencies: {0}",dependencyStatus));
                    // Firebase Unity SDK is not safe to use here.
                }
            });
        }
    
      // Update is called once per frame
      void Update()
        // ...
    }

שלב 3: (Android בלבד) הגדרה של העלאת סמלים

השלב הזה נדרש רק לאפליקציות ל-Android שמשתמשות ב-IL2CPP.

  • אין צורך לבצע את השלבים האלה באפליקציות ל-Android שמשתמשות ב-Mono scripting backend של Unity.

  • באפליקציות לפלטפורמת Apple, השלבים האלה לא נדרשים כי הפלאגין Firebase Unity Editor מגדיר באופן אוטומטי את פרויקט Xcode להעלאת סמלים.

Crashlytics SDK ל-Unity (גרסה 8.6.1 ואילך) כולל באופן אוטומטי דיווח על קריסות של NDK, שמאפשר ל-Crashlytics לדווח באופן אוטומטי על קריסות של IL2CPP ב-Unity ב-Android. עם זאת, כדי לראות בלוח הבקרה של Crashlytics עקבות מחסנית עם סימבולים לקריסות של ספריות מקוריות, צריך להעלות מידע על סימבולים בזמן ה-build באמצעות Firebase CLI.

כדי להגדיר העלאה של סמלים, פועלים לפי ההוראות להתקנת Firebase CLI.

אם כבר התקנתם את ה-CLI, חשוב לעדכן לגרסה האחרונה.

שלב 4: בניית הפרויקט והעלאת סמלים

.

iOS+‎ (פלטפורמת אפל)

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

  2. יוצרים את האפליקציה.

    בפלטפורמות של Apple, הפלאגין Firebase Unity Editor מגדיר באופן אוטומטי את פרויקט Xcode כדי ליצור ולהעלות קובץ סמלים שתואם ל-Crashlytics לשרתי Firebase לכל בנייה.

Android

  1. בתיבת הדו-שיח Build Settings (הגדרות בנייה), מבצעים אחת מהפעולות הבאות:

    • לייצא לפרויקט Android Studio כדי לבנות את הפרויקט, או

    • יוצרים את קובץ ה-APK ישירות מ-Unity Editor.
      לפני שיוצרים את הקובץ, מוודאים שתיבת הסימון Create symbols.zip מסומנת בתיבת הדו-שיח Build Settings.

  2. אחרי שה-build מסתיים, מריצים את פקודת Firebase CLI הבאה כדי ליצור קובץ סמלים שמתאים ל-Crashlytics ולהעלות אותו לשרתי Firebase:

    firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/SYMBOLS
    • FIREBASE_APP_ID: מזהה האפליקציה שלכם ב-Firebase ל-Android (לא שם החבילה)
      דוגמה למזהה אפליקציה ב-Firebase ל-Android: 1:567383003300:android:17104a2ced0c9b9b

    • PATH/TO/SYMBOLS: הנתיב לקובץ הסמלים שנוצר על ידי ה-CLI

      • ייצוא לפרויקט Android Studio – PATH/TO/SYMBOLS היא הספרייה unityLibrary/symbols, שנוצרת בספריית השורש של הפרויקט המיוצא אחרי שבונה את האפליקציה באמצעות Gradle או Android Studio.

      • יצירת קובץ ה-APK ישירות מתוך Unity –‏ PATH/TO/SYMBOLS היא הנתיב של קובץ הסמלים הדחוס שנוצר בספריית השורש של הפרויקט כשה-build הסתיים (לדוגמה: myproject/myapp-1.0-v100.symbols.zip).

    הצגת אפשרויות מתקדמות לשימוש בפקודת Firebase CLI ליצירה ולהעלאה של קובץ סמלים

    Flag תיאור
    --generator=csym

    משתמש במחולל קובצי הסמלים cSYM מדור קודם במקום במחולל ברירת המחדל Breakpad

    לא מומלץ לשימוש. מומלץ להשתמש בברירת המחדל של מחולל קובצי הסמלים של Breakpad.

    --generator=breakpad

    שימוש במחולל קובצי הסמלים של Breakpad

    שימו לב: ברירת המחדל ליצירת קובץ סמלים היא Breakpad. משתמשים בדגל הזה רק אם הוספתם את הערך symbolGenerator { csym() } בהגדרות ה-build ואתם רוצים לשנות את ברירת המחדל ל-Breakpad.

    --dry-run

    יוצר את קובצי הסמלים אבל לא מעלה אותם

    התג הזה שימושי אם רוצים לבדוק את התוכן של הקבצים שנשלחים.

    --debug מספק מידע נוסף על תוצאות ניפוי הבאגים

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

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

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

    using System;
    using UnityEngine;
    
    public class CrashlyticsTester : MonoBehaviour {
    
        int updatesBeforeException;
    
        // Use this for initialization
        void Start () {
          updatesBeforeException = 0;
        }
    
        // Update is called once per frame
        void Update()
        {
            // Call the exception-throwing method here so that it's run
            // every frame update
            throwExceptionEvery60Updates();
        }
    
        // A method that tests your Crashlytics implementation by throwing an
        // exception every 60 frame updates. You should see reports in the
        // Firebase console a few minutes after running your app with this method.
        void throwExceptionEvery60Updates()
        {
            if (updatesBeforeException > 0)
            {
                updatesBeforeException--;
            }
            else
            {
                // Set the counter to 60 updates
                updatesBeforeException = 60;
    
                // Throw an exception to test your Crashlytics implementation
                throw new System.Exception("test exception please ignore");
            }
        }
    }
  2. יוצרים את האפליקציה ומעלים את פרטי הסמלים אחרי שהבנייה מסתיימת.

    • iOS+‎: הפלאגין Firebase Unity Editor מגדיר באופן אוטומטי את פרויקט Xcode להעלאת קובץ הסמלים.

    • Android: באפליקציות ל-Android שמשתמשות ב-IL2CPP, מריצים את הפקודה Firebase CLI crashlytics:symbols:upload כדי להעלות את קובץ הסמלים.

  3. מריצים את האפליקציה. כשהאפליקציה פועלת, צופים בקובץ יומן במכשיר ומחכים שהחריגה תופעל מ-CrashlyticsTester.

    • iOS+‎: הצגת יומנים בחלונית התחתונה של Xcode.

    • Android: כדי להציג את היומנים, מריצים את הפקודה הבאה במסוף: adb logcat.

  4. במסוף Firebase, עוברים אל DevOps & Engagement > Crashlytics dashboard כדי לבדוק אם דוח קריסת הבדיקה מופיע.

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


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

השלבים הבאים