| انتخاب پلاتفرم: | 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 SDK را بارگیری کنید، سپس SDK را در جایی مناسب از حالت فشرده خارج کنید. کیت توسعه نرمافزار Firebase Unity مختص پلاتفرم نیست.
در پروژه Unity بازشده، به داراییها > وارد کردن بسته > بسته سفارشی بروید.
از کیت توسعه نرمافزار از حالت فشرده خارجشده، کیت توسعه نرمافزار Crashlytics را برای وارد کردن انتخاب کنید (
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: شناسه برنامه Android در Firebase (نه نام بسته شما)
نمونه شناسه برنامه Android در Firebase: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 صادر کنید تا از ویژگیها و تحلیلهای پیشرفته، مثل پرسوجو کردن دادهها، ساختن داشبوردهای سفارشی، و تنظیم کردن هشدارهای سفارشی بهرهمند شوید.