Catch up on highlights from Firebase at Google I/O 2023. Learn more

ابدأ مع Firebase Crashlytics

تصف هذه البداية السريعة كيفية إعداد Firebase Crashlytics في تطبيقك باستخدام Firebase Crashlytics SDK بحيث يمكنك الحصول على تقارير أعطال شاملة في وحدة تحكم Firebase.

يتطلب إعداد Crashlytics مهامًا في كل من وحدة تحكم Firebase و IDE (مثل إضافة ملف تكوين Firebase و Crashlytics SDK). لإنهاء الإعداد ، ستحتاج إلى فرض تعطل تجريبي لإرسال تقرير التعطل الأول إلى Firebase.

قبل ان تبدأ

  1. إذا لم تكن قد قمت بذلك بالفعل ، فأضف Firebase إلى مشروع Unity الخاص بك. إذا لم يكن لديك مشروع Unity ، فيمكنك تنزيل نموذج للتطبيق .

  2. موصى به : للحصول على ميزات مثل المستخدمين الذين لم يتعرضوا للأعطال وسجلات التنقل وتنبيهات السرعة ، تحتاج إلى تمكين Google Analytics في مشروع Firebase.

    • إذا لم يتم تمكين Google Analytics لمشروع Firebase الحالي ، فيمكنك تمكين Google Analytics من علامة التبويب "التكامل" في > إعدادات المشروع في وحدة تحكم Firebase.

    • إذا كنت تنشئ مشروع Firebase جديدًا ، فقم بتمكين Google Analytics أثناء سير عمل إنشاء المشروع.

الخطوة 1 : أضف Crashlytics SDK إلى تطبيقك

لاحظ أنه عند تسجيل مشروع Unity الخاص بك في مشروع Firebase ، ربما تكون قد قمت بالفعل بتنزيل Firebase Unity SDK وإضافة حزمة Crashlytics.

  1. قم بتنزيل Firebase Unity SDK ، ثم قم بفك ضغط SDK في مكان مناسب.

    إن حزمة Firebase Unity SDK ليست خاصة بالنظام الأساسي.

  2. في مشروع Unity المفتوح ، انتقل إلى Assets > Import Package > Custom Package .

  3. من SDK غير المضغوط ، حدد استيراد Crashlytics SDK ( FirebaseCrashlytics.unitypackage ).

    يمكنك أيضًا استيراد أي منتج آخر مدعوم من منتجات Firebase .

  4. في نافذة استيراد حزمة الوحدة ، انقر فوق استيراد .

الخطوة 2 : تهيئة 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()
        // ...
    }

الخطوة 3 : (Android فقط) قم بالإعداد لتحميل الرموز

هذه الخطوة مطلوبة فقط لتطبيقات Android التي تستخدم IL2CPP.

  • بالنسبة لتطبيقات Android التي تستخدم الواجهة الخلفية للبرمجة النصية الأحادية من Unity ، فلن تكون هناك حاجة إلى هذه الخطوات.

  • بالنسبة إلى تطبيقات نظام Apple الأساسي ، هذه الخطوات غير ضرورية لأن المكون الإضافي Firebase Unity Editor يقوم تلقائيًا بتهيئة مشروع Xcode الخاص بك لتحميل الرموز.

يشتمل برنامج Unity SDK 8.6.1+ من Crashlytics تلقائيًا على تقارير أعطال NDK ، مما يسمح لـ Crashlytics بالإبلاغ تلقائيًا عن أعطال Unity IL2CPP على Android. ومع ذلك ، لمشاهدة آثار المكدس الرمزية لأعطال المكتبة الأصلية في لوحة معلومات Crashlytics ، يجب عليك تحميل معلومات الرمز في وقت الإنشاء باستخدام Firebase CLI.

للإعداد لتحميل الرمز ، اتبع التعليمات لتثبيت Firebase CLI .

إذا كنت قد قمت بالفعل بتثبيت CLI ، فتأكد من التحديث إلى أحدث إصدار له .

الخطوة 4 : قم ببناء مشروعك وتحميل الرموز

iOS + (منصة آبل)

  1. من مربع الحوار Build Settings ، قم بتصدير مشروعك إلى مساحة عمل Xcode.

  2. بناء التطبيق الخاص بك.

    بالنسبة لأنظمة Apple الأساسية ، يقوم المكون الإضافي Firebase Unity Editor تلقائيًا بتهيئة مشروع Xcode الخاص بك لإنشاء وتحميل ملف رمز متوافق مع Crashlytics إلى خوادم Firebase لكل إصدار.

ذكري المظهر

  1. من مربع حوار Build Settings ، قم بأحد الإجراءات التالية:

    • تصدير إلى مشروع Android Studio لبناء مشروعك ؛ أو

    • قم ببناء APK الخاص بك مباشرة من Unity Editor.
      قبل البناء ، تأكد من تحديد خانة الاختيار الخاصة بإنشاء رموز. zip في مربع حوار إعدادات البناء .

  2. بمجرد انتهاء التصميم ، قم بإنشاء ملف رمز متوافق مع Crashlytics وقم بتحميله على خوادم Firebase عن طريق تشغيل أمر Firebase CLI التالي:

    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 هو مسار ملف الرمز المضغوط الذي تم إنشاؤه في الدليل الجذر للمشروع عند انتهاء الإنشاء (على سبيل المثال: 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 : بالنسبة لتطبيقات Android التي تستخدم IL2CPP ، قم بتشغيل Firebase CLI crashlytics:symbols:upload لتحميل ملف الرمز الخاص بك.

  3. قم بتشغيل التطبيق الخاص بك. بمجرد تشغيل تطبيقك ، راقب سجل الجهاز وانتظر حتى يتم تشغيل الاستثناء من CrashlyticsTester .

    • iOS + : اعرض السجلات في الجزء السفلي من Xcode.

    • Android : اعرض السجلات عن طريق تشغيل الأمر التالي في الجهاز: adb logcat .

  4. انتقل إلى لوحة معلومات Crashlytics بوحدة تحكم Firebase لمشاهدة اختبار تحطم الطائرة.

    إذا قمت بتحديث وحدة التحكم وما زلت لا ترى تعطل الاختبار بعد خمس دقائق ، فقم بتمكين تسجيل تصحيح الأخطاء لمعرفة ما إذا كان تطبيقك يرسل تقارير الأعطال أم لا.


وهذا كل شيء! تراقب Crashlytics الآن تطبيقك بحثًا عن الأعطال. قم بزيارة لوحة معلومات Crashlytics لعرض جميع تقاريرك وإحصاءاتك والتحقيق فيها.

الخطوات التالية

  • تكامل مع Google Play حتى تتمكن من تصفية تقارير أعطال تطبيق Android الخاص بك عن طريق مسار Google Play مباشرة في لوحة معلومات Crashlytics. يتيح لك هذا التركيز بشكل أفضل على لوحة القيادة الخاصة بك على تصميمات محددة.