با Firebase Crashlytics شروع کنید

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

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

قبل از اینکه شروع کنی

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

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

    • اگر پروژه Firebase موجود شما Google Analytics را فعال نکرده است، می توانید Google Analytics را از برگه Integrations فعال کنید. > تنظیمات پروژه در کنسول Firebase.

    • اگر در حال ایجاد یک پروژه Firebase هستید، Google Analytics را در جریان کار ایجاد پروژه فعال کنید.

مرحله 1 : Crashlytics SDK را به برنامه خود اضافه کنید

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

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

  2. در پروژه Unity باز خود، به Assets > Import Package > Custom Package بروید.

  3. از SDK خارج‌شده، گزینه وارد کردن Crashlytics SDK ( FirebaseCrashlytics.unitypackage ) را انتخاب کنید.

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

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

مرحله 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 : (فقط اندروید) برای آپلود نماد راه‌اندازی کنید

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

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

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

Unity SDK 8.6.1+ Crashlytics به طور خودکار شامل گزارش خرابی NDK می شود که به Crashlytics اجازه می دهد تا به طور خودکار خرابی های Unity IL2CPP را در اندروید گزارش کند. با این حال، برای دیدن ردپای نمادین پشته برای خرابی‌های کتابخانه بومی در داشبورد Crashlytics، باید اطلاعات نماد را در زمان ساخت با استفاده از Firebase CLI آپلود کنید.

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

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

مرحله 4 : پروژه خود را بسازید و نمادها را آپلود کنید

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

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

  2. اپلیکیشن خود را بسازید

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

اندروید

  1. از کادر گفتگوی Build Settings یکی از موارد زیر را انجام دهید:

    • برای ساخت پروژه خود به یک پروژه Android Studio صادر کنید. یا

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

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

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

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

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

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

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

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

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

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

    --generator=breakpad

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

    توجه داشته باشید که پیش فرض برای تولید فایل نماد، Breakpad است. فقط در صورتی از این پرچم استفاده کنید که اضافه کرده اید symbolGenerator { csym() } در پیکربندی ساخت شماست و می‌خواهید آن را نادیده بگیرید تا به جای آن از 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 : برای برنامه های اندرویدی شما که از IL2CPP استفاده می کنند، دستور Firebase CLI crashlytics:symbols:upload اجرا کنید تا فایل نماد خود را آپلود کنید.

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

    • iOS+ : گزارش‌ها را در قسمت پایین Xcode مشاهده کنید.

    • Android : با اجرای دستور زیر در ترمینال، گزارش‌ها را مشاهده کنید: adb logcat .

  4. برای مشاهده خرابی آزمایشی خود، به داشبورد Crashlytics کنسول Firebase بروید.

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


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

مراحل بعدی

  • (توصیه می‌شود) برای برنامه‌های Android که از IL2CPP استفاده می‌کنند، با جمع‌آوری گزارش‌های GWP-ASan، برای رفع اشکال خرابی‌های ناشی از خطاهای حافظه بومی کمک بگیرید. این خطاهای مربوط به حافظه می تواند با خراب شدن حافظه در برنامه شما مرتبط باشد، که علت اصلی آسیب پذیری های امنیتی برنامه است. برای استفاده از این ویژگی اشکال‌زدایی، مطمئن شوید که برنامه شما از جدیدترین Crashlytics SDK for Unity (نسخه 10.7.0+) استفاده می‌کند و GWP-ASan را صراحتاً فعال کرده است (از شما می‌خواهد مانیفست برنامه Android خود را تغییر دهید ).
  • با Google Play یکپارچه شوید تا بتوانید گزارش‌های خرابی برنامه Android خود را با استفاده از مسیر Google Play مستقیماً در داشبورد Crashlytics فیلتر کنید. این به شما امکان می دهد داشبورد خود را بهتر بر روی ساخت های خاص متمرکز کنید.