| انتخاب پلاتفرم: | iOS+ Android Android NDK Flutter Unity |
این راهنما نحوه شروع به کار با Firebase Crashlytics را در پروژه Unity شما شرح میدهد.
پساز راهاندازی کیت توسعه نرمافزار Firebase Crashlytics در برنامهتان، میتوانید گزارشهای خرابی جامع را در کنسول Firebase دریافت کنید.
راهاندازی Crashlytics مستلزم انجام کارهایی هم در کنسول Firebase و هم در IDE شما است (مانند افزودن فایل پیکربندی Firebase و کیت توسعه نرمافزار Crashlytics). برای تکمیل راهاندازی، باید خرابی آزمایشی را اجباری کنید تا اولین گزارش خرابی به Firebase ارسال شود.
قبل از شروع
اگر قبلاً این کار را نکردهاید، Firebase را به پروژه Unity خود اضافه کنید. اگر پروژه Unity ندارید، میتوانید برنامه نمونه را بارگیری کنید.
توصیهشده: برای دریافت خودکار گزارشهای ردپای رخدادها جهت درک کنشهای کاربر که منجر به ازکارافتادن، رویداد غیرکشنده، یا ANR میشود، باید Google Analytics را در پروژه Firebase خود فعال کنید.
اگر پروژه Firebase جدیدی ایجاد میکنید، Google Analytics را درطول گردش کار ایجاد پروژه فعال کنید.
اگر از پروژه Firebase موجودی استفاده میکنید که Google Analytics در آن فعال نیست، میتوانید آن را در
تنظیمات > صفحه ادغامها کنسول Firebase فعال کنید.
مرحله ۱: کیت توسعه نرمافزار Crashlytics را به برنامهتان اضافه کنید
توجه داشته باشید که وقتی پروژه Unity خود را در پروژه Firebase ثبت کردید، ممکن است قبلاً کیت توسعه نرمافزار Firebase Unity را بارگیری کرده باشید و بستههای شرحدادهشده در مراحل زیر را اضافه کرده باشید.
کیت توسعه نرمافزار Firebase Unity را بارگیری کنید، سپس کیت توسعه نرمافزار را در جایی مناسب از حالت فشرده خارج کنید. کیت توسعه نرمافزار Firebase Unity مختص پلاتفرم نیست.
در پروژه Unity بازشده، به داراییها > وارد کردن بسته > بسته سفارشی بروید.
از کیت توسعه نرمافزار از حالت فشرده خارجشده، Crashlytics SDK (
FirebaseCrashlytics.unitypackage) را برای وارد کردن انتخاب کنید.برای بهرهمندی از گزارشهای ردپای رخدادها کیت توسعه نرمافزار Firebase برای Google Analytics را نیز به برنامهتان اضافه کنید (
FirebaseAnalytics.unitypackage). مطمئن شوید که Google Analytics در پروژه Firebase شما فعال باشد.در پنجره Import Unity Package، روی Import کلیک کنید.
مرحله ۲: مقداردهی اولیه 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() // ... }
مرحله ۳: (فقط 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)
از کادر گفتگوی Build Settings، پروژهتان را به فضای کاری Xcode صادر کنید.
برنامهتان را بسازید.
برای پلاتفرمهای Apple، افزونه Firebase Unity Editor بهطور خودکار پروژه Xcode شما را پیکربندی میکند تا برای هر ساخت، فایل نماد سازگار با Crashlytics را تولید و در سرورهای Firebase بارگذاری کند.
Android
در کادر گفتگوی تنظیمات ساخت، یکی از کارهای زیر را انجام دهید:
به پروژه «استودیو Android» صادر کنید تا پروژهتان را بسازید؛ یا
APK خود را مستقیماً از Unity Editor بسازید.
قبلاز ساختن، مطمئن شوید چارگوش انتخاب ایجاد symbols.zip در کادر گفتگوی تنظیمات ساختن علامت زده شده باشد.
پساز تکمیل ساخت، فایل نماد سازگار با Crashlytics را تولید کنید و با اجرای فرمان CLI زیر، آن را در سرورهای Firebase بارگذاری کنید: Firebase
firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/SYMBOLS
FIREBASE_APP_ID: شناسه برنامه Firebase Android شما (نه نام بسته شما)
نمونه شناسه برنامه Firebase Android:1:567383003300:android:17104a2ced0c9b9bPATH/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 پیشفرض تولید فایل نماد است. فقط درصورتی از این پرچم استفاده کنید که
را در پیکربندی ساختتان اضافه کرده باشید و بخواهید آن را لغو کنید تا بهجای آن از Breakpad استفاده کنید.symbolGenerator { csym() }--dry-runفایلهای نماد را تولید میکند اما آنها را بارگذاری نمیکند
این پرچم زمانی مفید است که بخواهید محتوای فایلهای ارسالی را بررسی کنید.
--debugاطلاعات اشکالزدایی بیشتری ارائه میدهد
مرحله ۵: برای تکمیل راهاندازی، خرابی آزمایشی را اجباری کنید
برای تکمیل راهاندازی 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.
در کنسول Firebase، به داشبورد DevOps و تعامل > Crashlytics بروید تا گزارش خرابی آزمایشی را بررسی کنید.
اگر کنسول را بازآوری کردهاید و هنوز خرابی آزمایشی را پساز پنج دقیقه نمیبینید، ثبت اشکالزدایی را فعال کنید تا ببینید برنامهتان گزارشهای خرابی را ارسال میکند یا نه.
همین! Crashlytics اکنون برنامهتان را ازنظر خرابی پایش میکند. برای مشاهده و بررسی همه گزارشها و آمار، به داشبورد Crashlytics بروید.
مراحل بعدی
(توصیهشده) برای برنامههای Android که از IL2CPP استفاده میکنند، با جمعآوری گزارشهای GWP-ASan، برای اشکالزدایی خرابیهای ناشی از خطاهای حافظه محلی راهنمایی دریافت کنید. این خطاهای مربوط به حافظه میتواند با خرابی حافظه در برنامهتان مرتبط باشد که علت اصلی آسیبپذیریهای امنیتی برنامه است. برای بهرهمندی از این ویژگی اشکالزدایی، مطمئن شوید برنامهتان از جدیدترین Crashlytics SDK برای Unity (نسخه ۱۰.۷.۰+) استفاده میکند و GWP-ASan بهطور صریح در آن فعال شده است (لازم است مانیفست برنامه Android خود را اصلاح کنید).
راهاندازی گزارش خرابی را سفارشیسازی کنید با افزودن گزارشدهی موافقت کردن، گزارشها، کلیدها، و ردیابی خطاهای غیرمهلک.
برای تجزیهوتحلیل و ویژگیهای پیشرفته، دادههایتان را به BigQuery یا Cloud Logging صادر کنید مانند پرسوجو از دادههایتان، ساختن داشبوردهای سفارشی، و راهاندازی هشدارهای سفارشی.