توضح هذه البداية السريعة كيفية إعداد Firebase Crashlytics في تطبيقك باستخدام Firebase Crashlytics SDK حتى تتمكن من الحصول على تقارير الأعطال الشاملة في وحدة تحكم Firebase.
يتطلب إعداد Crashlytics مهام في كل من وحدة تحكم Firebase وIDE الخاص بك (مثل إضافة ملف تكوين Firebase وCrashlytics SDK). لإنهاء الإعداد، ستحتاج إلى فرض اختبار الأعطال لإرسال تقرير الأعطال الأول إلى Firebase.
قبل ان تبدأ
إذا لم تقم بذلك بالفعل، قم بإضافة Firebase إلى مشروع Unity الخاص بك. إذا لم يكن لديك مشروع Unity، فيمكنك تنزيل تطبيق نموذجي .
موصى به : للحصول على ميزات مثل المستخدمين الخاليين من الأعطال، وسجلات مسارات التنقل، وتنبيهات السرعة، تحتاج إلى تمكين Google Analytics في مشروع Firebase الخاص بك.
إذا لم يتم تمكين Google Analytics في مشروعك الحالي في Firebase، فيمكنك تمكين Google Analytics من علامة التبويب عمليات التكامل في جهازك.
إذا كنت تقوم بإنشاء مشروع Firebase جديد، فقم بتمكين Google Analytics أثناء سير عمل إنشاء المشروع.
الخطوة 1 : أضف Crashlytics SDK إلى تطبيقك
لاحظ أنه عند تسجيل مشروع Unity الخاص بك مع مشروع Firebase الخاص بك، ربما تكون قد قمت بالفعل بتنزيل Firebase Unity SDK وأضفت حزمة Crashlytics.
قم بتنزيل Firebase Unity SDK ، ثم قم بفك ضغط SDK في مكان مناسب.
إن Firebase Unity SDK ليس خاصًا بالنظام الأساسي.
في مشروع Unity المفتوح، انتقل إلى Assets > Import Package > Custom Package .
من حزمة SDK التي تم فك ضغطها، حدد استيراد Crashlytics SDK (
FirebaseCrashlytics.unitypackage
).يمكنك أيضًا استيراد أي منتج آخر مدعوم من Firebase .
في نافذة استيراد حزمة الوحدة ، انقر فوق استيراد .
الخطوة 2 : تهيئة Crashlytics
قم بإنشاء برنامج نصي جديد لـ C#، ثم قم بإضافته إلى
GameObject
في المشهد.افتح المشهد الأول، ثم أنشئ
GameObject
فارغًا باسمCrashlyticsInitializer
.انقر فوق إضافة مكون في المفتش للكائن الجديد.
حدد البرنامج النصي
CrashlyticsInit
لإضافته إلى كائنCrashlyticsInitializer
.
تهيئة 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+ (منصة أبل)
من مربع حوار إعدادات البناء ، قم بتصدير مشروعك إلى مساحة عمل Xcode.
أنشئ تطبيقك.
بالنسبة لمنصات Apple الأساسية، يقوم المكون الإضافي Firebase Unity Editor تلقائيًا بتكوين مشروع Xcode الخاص بك لإنشاء وتحميل ملف رمز متوافق مع Crashlytics إلى خوادم Firebase لكل إصدار.
ذكري المظهر
من مربع حوار إعدادات البناء ، قم بأحد الإجراءات التالية:
قم بالتصدير إلى مشروع Android Studio لإنشاء مشروعك؛ أو
أنشئ ملف APK الخاص بك مباشرةً من Unity Editor.
قبل البناء، تأكد من تحديد مربع الاختيار الخاص بإنشاء الرموز.zip في مربع حوار إعدادات البناء .
بمجرد الانتهاء من البناء، قم بإنشاء ملف رمز متوافق مع 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
فيما يلي طريقتان للعثور على معرف تطبيق Firebase الخاص بك:
في ملف
google-services.json
، يكون معرف التطبيق الخاص بك هو قيمةmobilesdk_app_id
؛ أوفي وحدة تحكم Firebase، انتقل إلى إعدادات المشروع . قم بالتمرير لأسفل إلى بطاقة تطبيقاتك ، ثم انقر فوق تطبيق Firebase المطلوب للعثور على معرف التطبيق الخاص به.
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، يلزمك فرض اختبار التعطل.
ابحث عن
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"); } } }
أنشئ تطبيقك وقم بتحميل معلومات الرمز بعد انتهاء البناء.
iOS+ : يقوم البرنامج الإضافي Firebase Unity Editor تلقائيًا بتكوين مشروع Xcode الخاص بك لتحميل ملف الرمز الخاص بك.
Android : بالنسبة لتطبيقات Android التي تستخدم IL2CPP، قم بتشغيل أمر Firebase CLI
crashlytics:symbols:upload
لتحميل ملف الرمز الخاص بك.
قم بتشغيل التطبيق الخاص بك. بمجرد تشغيل تطبيقك، شاهد سجل الجهاز وانتظر حتى يتم تشغيل الاستثناء من
CrashlyticsTester
.iOS+ : عرض السجلات في الجزء السفلي من Xcode.
Android : اعرض السجلات عن طريق تشغيل الأمر التالي في الوحدة الطرفية:
adb logcat
.
انتقل إلى لوحة تحكم Crashlytics في وحدة تحكم Firebase لرؤية العطل الاختباري.
إذا قمت بتحديث وحدة التحكم وما زلت لا ترى العطل الاختباري بعد خمس دقائق، فقم بتمكين تسجيل تصحيح الأخطاء لمعرفة ما إذا كان تطبيقك يرسل تقارير الأعطال.
وهذا كل شيء! تقوم Crashlytics الآن بمراقبة تطبيقك بحثًا عن الأعطال. قم بزيارة لوحة تحكم Crashlytics لعرض جميع التقارير والإحصائيات الخاصة بك والتحقيق فيها.
الخطوات التالية
- (موصى به) بالنسبة إلى تطبيقات Android التي تستخدم IL2CPP، يمكنك الحصول على مساعدة في تصحيح الأخطاء الناتجة عن أخطاء الذاكرة الأصلية من خلال جمع تقارير GWP-ASan . يمكن أن ترتبط هذه الأخطاء المتعلقة بالذاكرة بتلف الذاكرة داخل تطبيقك، وهو السبب الرئيسي للثغرات الأمنية في التطبيق. للاستفادة من ميزة تصحيح الأخطاء هذه، تأكد من أن تطبيقك يستخدم أحدث إصدار من Crashlytics SDK for Unity (الإصدار 10.7.0+) وتم تمكين GWP-ASan بشكل صريح (يتطلب منك تعديل بيان تطبيق Android الخاص بك ).
- قم بتخصيص إعداد تقرير الأعطال الخاص بك عن طريق إضافة تقارير الاشتراك والسجلات والمفاتيح وتتبع الأخطاء غير المميتة.
- قم بالتكامل مع Google Play حتى تتمكن من تصفية تقارير الأعطال الخاصة بتطبيق Android الخاص بك من خلال تتبع Google Play مباشرة في لوحة معلومات Crashlytics. يتيح لك ذلك تركيز لوحة المعلومات بشكل أفضل على تصميمات محددة.