ابدأ مع Firebase Crashlytics

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

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

قبل ان تبدأ

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

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

    • إذا لم يتم تمكين Google Analytics في مشروعك الحالي في Firebase، فيمكنك تمكين Google Analytics من علامة التبويب عمليات التكامل في جهازك. > إعدادات المشروع في وحدة تحكم 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. في نافذة استيراد حزمة الوحدة ، انقر فوق استيراد .

الخطوة 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 الخاص بك لتحميل الرموز.

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

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

إذا قمت بالفعل بتثبيت واجهة سطر الأوامر (CLI)، فتأكد من التحديث إلى الإصدار الأحدث .

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

iOS+ (منصة أبل)

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

  2. أنشئ تطبيقك.

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

ذكري المظهر

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

    • قم بالتصدير إلى مشروع 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 لعرض جميع التقارير والإحصائيات الخاصة بك والتحقيق فيها.

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

  • (موصى به) بالنسبة إلى تطبيقات Android التي تستخدم IL2CPP، يمكنك الحصول على مساعدة في تصحيح الأخطاء الناتجة عن أخطاء الذاكرة الأصلية من خلال جمع تقارير GWP-ASan . يمكن أن ترتبط هذه الأخطاء المتعلقة بالذاكرة بتلف الذاكرة داخل تطبيقك، وهو السبب الرئيسي للثغرات الأمنية في التطبيق. للاستفادة من ميزة تصحيح الأخطاء هذه، تأكد من أن تطبيقك يستخدم أحدث إصدار من Crashlytics SDK for Unity (الإصدار 10.7.0+) وتم تمكين GWP-ASan بشكل صريح (يتطلب منك تعديل بيان تطبيق Android الخاص بك ).
  • قم بالتكامل مع Google Play حتى تتمكن من تصفية تقارير الأعطال الخاصة بتطبيق Android الخاص بك من خلال تتبع Google Play مباشرة في لوحة معلومات Crashlytics. يتيح لك ذلك تركيز لوحة المعلومات بشكل أفضل على تصميمات محددة.