شروع به کار با Crashlytics برای Unity

انتخاب پلاتفرم: iOS+ Android Android NDK Flutter Unity


این راهنما نحوه شروع به کار با Firebase Crashlytics را در پروژه Unity شما شرح می‌دهد.

پس‌از راه‌اندازی کیت توسعه نرم‌افزار Firebase Crashlytics در برنامه‌تان، می‌توانید گزارش‌های خرابی جامع را در کنسول Firebase دریافت کنید.

راه‌اندازی Crashlytics نیازمند انجام کارهایی هم در کنسول Firebase و هم در IDE شما است (مانند افزودن فایل پیکربندی Firebase و کیت توسعه نرم‌افزار Crashlytics). برای تکمیل راه‌اندازی، باید خرابی آزمایشی را اجباری کنید تا اولین گزارش خرابی به Firebase ارسال شود.

قبل از شروع

  1. اگر قبلاً این کار را نکرده‌اید، Firebase را به پروژه Unity خود اضافه کنید. اگر پروژه Unity ندارید، می‌توانید برنامه نمونه را بارگیری کنید.

  2. توصیه‌شده: برای دریافت خودکار گزارش‌های ردپای رخدادها جهت درک کنش‌های کاربر که منجر به خرابی، رویداد غیرکشنده، یا ANR می‌شود، باید Google Analytics را در پروژه Firebase خود فعال کنید.

    • اگر پروژه Firebase جدیدی ایجاد می‌کنید، Google Analytics را درطول گردش کار ایجاد پروژه فعال کنید.

    • اگر از پروژه Firebase موجودی استفاده می‌کنید که Google Analytics در آن فعال نیست، می‌توانید آن را در تنظیمات > صفحه ادغام‌ها کنسول Firebase فعال کنید.

مرحله ۱: کیت توسعه نرم‌افزار Crashlytics را به برنامه‌تان اضافه کنید

توجه داشته باشید که وقتی پروژه Unity خود را در پروژه Firebase ثبت کردید، ممکن است قبلاً کیت توسعه نرم‌افزار Firebase Unity را بارگیری کرده باشید و بسته‌های شرح‌داده‌شده در مراحل زیر را اضافه کرده باشید.

  1. Firebase Unity SDK را بارگیری کنید، سپس SDK را در جایی مناسب از حالت فشرده خارج کنید. کیت توسعه نرم‌افزار Firebase Unity مختص پلاتفرم نیست.

  2. در پروژه Unity بازشده، به دارایی‌ها > وارد کردن بسته > بسته سفارشی بروید.

  3. از کیت توسعه نرم‌افزار از حالت فشرده خارج‌شده، کیت توسعه نرم‌افزار Crashlytics را برای وارد کردن انتخاب کنید (FirebaseCrashlytics.unitypackage).

    برای بهره‌مندی از گزارش‌های ردپای رخدادها کیت توسعه نرم‌افزار Firebase برای Google Analytics را نیز به برنامه‌تان اضافه کنید (FirebaseAnalytics.unitypackage). مطمئن شوید که Google Analytics در پروژه Firebase شما فعال باشد.

  4. در پنجره Import Unity Package، روی Import کلیک کنید.

مرحله ۲: مقداردهی اولیه Crashlytics

  1. اسکریپت C# ‎ جدیدی ایجاد کنید، سپس آن را به GameObject در صحنه اضافه کنید.

    1. صحنه اول را باز کنید، سپس یک GameObject خالی به نام CrashlyticsInitializer ایجاد کنید.

    2. روی افزودن مؤلفه در بازرس برای شیء جدید کلیک کنید.

    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()
        // ...
    }

مرحله ۳: (فقط Android) آماده شدن برای بارگذاری نماد

این مرحله فقط برای برنامه‌های Android که از IL2CPP استفاده می‌کنند لازم است.

  • برای برنامه‌های Android که از پس‌زمینه اسکریپت‌نویسی Mono در Unity استفاده می‌کنند، این مراحل لازم نیست.

  • برای برنامه‌های پلاتفرم Apple، این مراحل لازم نیست زیرا افزونه Firebase Unity Editor به‌طور خودکار پروژه Xcode شما را برای بارگذاری نمادها پیکربندی می‌کند.

Crashlytics SDK برای Unity (نسخه ۸.۶.۱+) به‌طور خودکار شامل گزارش خرابی NDK است که به Crashlytics اجازه می‌دهد به‌طور خودکار خرابی‌های Unity IL2CPP را در Android گزارش دهد. بااین‌حال، برای دیدن رد پشته نمادین‌شده برای ازکارافتادن‌های کتابخانه بومی در داشبورد Crashlytics، باید اطلاعات نماد را در زمان ساخت بااستفاده از Firebase CLI بارگذاری کنید.

برای آماده شدن برای بارگذاری نماد، دستورالعمل‌های نصب Firebase CLI را دنبال کنید.

اگر قبلاً CLI را نصب کرده‌اید، حتماً آن را به جدیدترین نسخه‌اش به‌روز کنید.

مرحله ۴: ساختن پروژه و بارگذاری نمادها

iOS+ (پلاتفرم Apple)

  1. از کادر گفتگوی Build Settings، پروژه‌تان را به فضای کاری Xcode صادر کنید.

  2. برنامه‌تان را بسازید.

    برای پلاتفرم‌های Apple، افزونه Firebase Unity Editor به‌طور خودکار پروژه Xcode شما را پیکربندی می‌کند تا برای هر ساخت، فایل نماد سازگار با Crashlytics را تولید و در سرورهای Firebase بارگذاری کند.

Android

  1. در کادر گفتگوی تنظیمات ساخت، یکی از کارهای زیر را انجام دهید:

    • به پروژه «استودیو Android» صادر کنید تا پروژه‌تان را بسازید؛ یا

    • APK خود را مستقیماً از Unity Editor بسازید.
      قبل‌از ساختن، مطمئن شوید چارگوش انتخاب ایجاد symbols.zip در کادر گفتگوی تنظیمات ساختن علامت زده شده باشد.

  2. پس‌از اتمام ساخت، فایل نماد سازگار با Crashlytics را تولید کنید و با اجرای فرمان CLI زیر، آن را در سرورهای Firebase بارگذاری کنید: Firebase

    firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/SYMBOLS
    • FIREBASE_APP_ID: شناسه برنامه Android در Firebase (نه نام بسته شما)
      نمونه شناسه برنامه Android در Firebase: 1:567383003300:android:17104a2ced0c9b9b

    • ‫PATH/TO/SYMBOLS: مسیر فایل نماد تولیدشده توسط CLI

      • به پروژه «استودیو Android» صادر شد — PATH/TO/SYMBOLS دایرکتوری unityLibrary/symbols است، که پس‌از ساختن برنامه ازطریق Gradle یا «استودیو Android» در ریشه پروژه صادرشده ایجاد می‌شود.

      • فایل APK را مستقیماً از داخل Unity ساخته‌اید — PATH/TO/SYMBOLS مسیر فایل نماد فشرده‌شده است که پس‌از تکمیل ساخت در دایرکتوری ریشه پروژه تولید شده است (برای مثال: myproject/myapp-1.0-v100.symbols.zip).

    مشاهده گزینه‌های پیشرفته برای استفاده از فرمان Firebase CLI برای تولید و بارگذاری فایل نماد

    پرچم شرح
    --generator=csym

    به‌جای تولیدکننده پیش‌فرض Breakpad، از تولیدکننده فایل نماد cSYM قدیمی استفاده می‌کند

    استفاده از آن توصیه نمی‌شود. توصیه می‌کنیم از تولیدکننده فایل نماد Breakpad پیش‌فرض استفاده کنید.

    --generator=breakpad

    از تولیدکننده فایل نماد Breakpad استفاده می‌کند

    توجه داشته باشید که Breakpad پیش‌فرض تولید فایل نماد است. فقط درصورتی از این پرچم استفاده کنید که symbolGenerator { csym() } را در پیکربندی ساختتان اضافه کرده باشید و بخواهید آن را لغو کنید تا به‌جای آن از Breakpad استفاده کنید.

    --dry-run

    فایل‌های نماد را تولید می‌کند اما آن‌ها را بارگذاری نمی‌کند

    این پرچم زمانی مفید است که بخواهید محتوای فایل‌های ارسالی را بررسی کنید.

    --debug اطلاعات اشکال‌زدایی بیشتری ارائه می‌دهد

مرحله ۵: برای تکمیل راه‌اندازی، خرابی آزمایشی را اجباری کنید

برای تکمیل راه‌اندازی 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 و تعامل > Crashlytics بروید تا گزارش خرابی آزمایشی را بررسی کنید.

    اگر کنسول را بازآوری کرده‌اید و هنوز خرابی آزمایشی را پس‌از پنج دقیقه نمی‌بینید، ثبت اشکال‌زدایی را فعال کنید تا ببینید آیا برنامه‌تان گزارش‌های خرابی را ارسال می‌کند یا نه.


همین! Crashlytics اکنون برنامه‌تان را ازنظر خرابی پایش می‌کند. برای مشاهده و بررسی همه گزارش‌ها و آمار، به داشبورد Crashlytics بروید.

مراحل بعدی