این شروع سریع نحوه راهاندازی Firebase Crashlytics را در برنامه خود با Firebase Crashlytics SDK توضیح میدهد تا بتوانید گزارشهای خرابی جامع را در کنسول Firebase دریافت کنید.
راهاندازی Crashlytics به وظایفی هم در کنسول Firebase و هم در IDE شما نیاز دارد (مانند افزودن یک فایل پیکربندی Firebase و Crashlytics SDK). برای تکمیل راهاندازی، باید یک خرابی آزمایشی را مجبور کنید تا اولین گزارش خرابی خود را به Firebase ارسال کنید.
قبل از شروع
اگر قبلاً این کار را نکرده اید، Firebase را به پروژه Unity خود اضافه کنید . اگر پروژه یونیتی ندارید، می توانید یک برنامه نمونه دانلود کنید.
توصیه میشود : برای دریافت خودکار گزارشهای خرده نان برای درک اقدامات کاربر که منجر به خرابی، رویداد غیرمرگبار یا ANR میشود، باید Google Analytics در پروژه Firebase خود فعال کنید.
اگر پروژه Firebase موجود شما Google Analytics فعال نکرده است، می توانید Google Analytics از برگه Integrations فعال کنید.
Firebase . > تنظیمات پروژه در کنسولاگر در حال ایجاد یک پروژه Firebase هستید، Google Analytics در جریان کار ایجاد پروژه فعال کنید.
مرحله 1 : Crashlytics SDK را به برنامه خود اضافه کنید
توجه داشته باشید که وقتی پروژه Unity خود را با پروژه Firebase خود ثبت کردید، ممکن است قبلاً Firebase Unity SDK را دانلود کرده باشید و بسته های توضیح داده شده در مراحل زیر را اضافه کرده باشید.
Firebase Unity SDK را دانلود کنید، سپس SDK را در جایی مناسب از حالت فشرده خارج کنید. Firebase Unity SDK مخصوص پلتفرم نیست.
در پروژه Unity باز خود، به Assets > Import Package > Custom Package بروید.
از SDK خارجشده، گزینه وارد کردن Crashlytics SDK (
FirebaseCrashlytics.unitypackage
) را انتخاب کنید.برای بهرهگیری از گزارشهای خرده نان، Firebase SDK برای Google Analytics را نیز به برنامه خود اضافه کنید (
FirebaseAnalytics.unitypackage
). مطمئن شوید که Google Analytics در پروژه Firebase شما فعال است .در پنجره Import Unity Package ، روی Import کلیک کنید.
مرحله 2 : Crashlytics راه اندازی کنید
یک اسکریپت C# جدید ایجاد کنید، سپس آن را به
GameObject
در صحنه اضافه کنید.اولین صحنه خود را باز کنید، سپس یک
GameObject
خالی با نامCrashlyticsInitializer
ایجاد کنید.روی Add Component در Inspector برای شی جدید کلیک کنید.
اسکریپت
Crashlytics Init
خود را انتخاب کنید تا آن را به شی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 : (فقط اندروید) برای آپلود نماد راهاندازی کنید
این مرحله فقط برای برنامه های اندرویدی که از IL2CPP استفاده می کنند لازم است.
برای برنامههای اندرویدی که از بخش اسکریپتنویسی مونو Unity استفاده میکنند، به این مراحل نیازی نیست.
برای برنامههای پلتفرم اپل، به این مراحل نیازی نیست، زیرا افزونه Firebase Unity Editor بهطور خودکار پروژه Xcode شما را برای آپلود نمادها پیکربندی میکند.
Unity SDK 8.6.1+ Crashlytics به طور خودکار شامل گزارش خرابی NDK می شود که به Crashlytics اجازه می دهد تا به طور خودکار خرابی های Unity IL2CPP در Android را گزارش کند. با این حال، برای دیدن ردپای نمادین پشته برای خرابیهای کتابخانه بومی در داشبورد Crashlytics ، باید اطلاعات نماد را در زمان ساخت با استفاده از Firebase CLI آپلود کنید.
برای راهاندازی برای بارگذاری نماد، دستورالعملهای نصب Firebase CLI را دنبال کنید.
اگر قبلاً CLI را نصب کردهاید، حتماً به آخرین نسخه آن بهروزرسانی کنید .
مرحله 4 : پروژه خود را بسازید و نمادها را آپلود کنید
iOS+ (پلتفرم اپل)
از کادر گفتگوی Build Settings ، پروژه خود را به فضای کاری Xcode صادر کنید.
اپلیکیشن خود را بسازید
برای پلتفرم های اپل، افزونه Firebase Unity Editor به طور خودکار پروژه Xcode شما را برای تولید و آپلود یک فایل نماد سازگار با Crashlytics در سرورهای Firebase برای هر ساخت، پیکربندی می کند.
اندروید
از کادر گفتگوی Build Settings یکی از موارد زیر را انجام دهید:
برای ساخت پروژه خود به یک پروژه Android Studio صادر کنید. یا
APK خود را مستقیماً از ویرایشگر Unity بسازید.
قبل از ساخت، مطمئن شوید که چک باکس Create symbols.zip در گفتگوی تنظیمات ساخت علامت زده شده باشد.
پس از اتمام ساخت، یک فایل نماد سازگار با Crashlytics ایجاد کنید و با اجرای دستور Firebase CLI زیر آن را در سرورهای Firebase آپلود کنید:
firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/SYMBOLS
FIREBASE_APP_ID : شناسه برنامه Android Firebase شما (نه نام بسته شما)
ID برنامه اندروید Firebase مثال: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 : برای برنامه های اندرویدی شما که از 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 فیلتر کنید. این به شما امکان می دهد داشبورد خود را بهتر بر روی ساخت های خاص متمرکز کنید.
،
این شروع سریع نحوه راهاندازی Firebase Crashlytics را در برنامه خود با Firebase Crashlytics SDK توضیح میدهد تا بتوانید گزارشهای خرابی جامع را در کنسول Firebase دریافت کنید.
راهاندازی Crashlytics به وظایفی هم در کنسول Firebase و هم در IDE شما نیاز دارد (مانند افزودن یک فایل پیکربندی Firebase و Crashlytics SDK). برای تکمیل راهاندازی، باید یک خرابی آزمایشی را مجبور کنید تا اولین گزارش خرابی خود را به Firebase ارسال کنید.
قبل از شروع
اگر قبلاً این کار را نکرده اید، Firebase را به پروژه Unity خود اضافه کنید . اگر پروژه یونیتی ندارید، می توانید یک برنامه نمونه دانلود کنید.
توصیه میشود : برای دریافت خودکار گزارشهای خرده نان برای درک اقدامات کاربر که منجر به خرابی، رویداد غیرمرگبار یا ANR میشود، باید Google Analytics در پروژه Firebase خود فعال کنید.
اگر پروژه Firebase موجود شما Google Analytics فعال نکرده است، می توانید Google Analytics از برگه Integrations فعال کنید.
Firebase . > تنظیمات پروژه در کنسولاگر در حال ایجاد یک پروژه Firebase هستید، Google Analytics در جریان کار ایجاد پروژه فعال کنید.
مرحله 1 : Crashlytics SDK را به برنامه خود اضافه کنید
توجه داشته باشید که وقتی پروژه Unity خود را با پروژه Firebase خود ثبت کردید، ممکن است قبلاً Firebase Unity SDK را دانلود کرده باشید و بسته های توضیح داده شده در مراحل زیر را اضافه کرده باشید.
Firebase Unity SDK را بارگیری کنید ، سپس SDK را در جایی مناسب از حالت فشرده جدا کنید. Firebase Unity SDK مخصوص پلتفرم نیست.
در پروژه Unity باز خود، به Assets > Import Package > Custom Package بروید.
از SDK از بین رفته ، برای وارد کردن Crashlytics SDK (
FirebaseCrashlytics.unitypackage
) را انتخاب کنید.برای استفاده از سیاهههای مربوط به خرده نان نیز SDK Firebase را برای Google Analytics به برنامه خود اضافه کنید (
FirebaseAnalytics.unitypackage
). اطمینان حاصل کنید که Google Analytics در پروژه Firebase شما فعال شده است .در پنجره Import Unity Package ، روی Import کلیک کنید.
مرحله 2 : Crashlytics اولیه کنید
یک اسکریپت C# جدید ایجاد کنید ، سپس آن را به یک
GameObject
در صحنه اضافه کنید.صحنه اول خود را باز کنید ، سپس یک
GameObject
خالی به نامCrashlyticsInitializer
ایجاد کنید.برای گزینه جدید روی Add Component در بازرس کلیک کنید.
اسکریپت
Crashlytics Init
خود را انتخاب کنید تا آن را به شی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 که از Backend Scripting Mono Unity استفاده می کنند ، این مراحل لازم نیست.
برای برنامه های Apple Platform ، این مراحل لازم نیست زیرا افزونه ویرایشگر Unity Firebase به طور خودکار پروژه Xcode شما را برای بارگذاری نمادها پیکربندی می کند.
Unity SDK 8.6.1 Crashlytics به طور خودکار شامل گزارش خرابی NDK است ، که به Crashlytics اجازه می دهد تا به طور خودکار Unity IL2CPP را در Android گزارش کند. با این حال ، برای دیدن آثار پشته نمادین برای خرابی های کتابخانه های بومی در داشبورد Crashlytics ، باید اطلاعات نماد را در زمان ساخت با استفاده از CLI Firebase بارگذاری کنید.
برای تنظیم بارگذاری نماد ، دستورالعمل های نصب Firebase CLI را دنبال کنید.
اگر قبلاً CLI را نصب کرده اید ، حتماً آخرین نسخه آن را به روز کنید .
مرحله 4 : پروژه خود را بسازید و نمادها را بارگذاری کنید
iOS+ (پلت فرم اپل)
از گفتگوی تنظیمات Build ، پروژه خود را به فضای کاری Xcode صادر کنید.
اپلیکیشن خود را بسازید
برای سیستم عامل های اپل ، افزونه ویرایشگر Unity Firebase به طور خودکار پروژه Xcode شما را برای تولید و بارگذاری یک فایل نماد سازگار با Crashlytics در سرورهای Firebase برای هر ساخت تنظیم می کند.
اندروید
از گفتگوی تنظیمات ساخت ، یکی از موارد زیر را انجام دهید:
برای ساختن پروژه خود به یک پروژه استودیوی اندرویدی صادرات کنید. یا
APK خود را مستقیماً از ویرایشگر وحدت بسازید.
قبل از ساخت ، اطمینان حاصل کنید که کادر انتخاب برای ایجاد نمادها. zip در گفتگوی تنظیمات Build بررسی شده است.
پس از اتمام ساخت شما ، یک پرونده نماد سازگار با 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:17104a2ced0c9b9b
در اینجا دو روش برای یافتن شناسه برنامه Firebase خود وجود دارد:
در پرونده
google-services.json
خود ، شناسه برنامه شما مقدارmobilesdk_app_id
است. یادر کنسول Firebase به تنظیمات پروژه خود بروید. به کارت برنامه های خود بروید ، سپس بر روی برنامه مورد نظر Firebase کلیک کنید تا شناسه برنامه آن را پیدا کنید.
PATH/TO/SYMBOLS : مسیر پرونده نماد تولید شده توسط CLI
دایرکتوری
unityLibrary/symbols
PATH/TO/SYMBOLS یک پروژه Android Studio صادر شده است که پس از ساختن برنامه از طریق Gradle یا Android Studio ، در ریشه پروژه صادر شده ایجاد می شود.APK را مستقیماً از درون وحدت ساخته شده است - PATH/TO/SYMBOLS مسیر پرونده نماد فشرده شده است که پس از اتمام ساخت شما در فهرست ریشه پروژه ایجاد شده است (برای مثال:
myproject/myapp-1.0-v100.symbols.zip
).
گزینه های پیشرفته برای استفاده از دستور Firebase CLI را برای تولید پرونده نماد و بارگذاری مشاهده کنید
پرچم توضیحات --generator=csym
به جای ژنراتور پیش فرض Breakpad از ژنراتور File File میراث CSYM استفاده می کند
برای استفاده توصیه نمی شود. توصیه می کنیم از ژنراتور فایل نماد پیش فرض استفاده کنید.
--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+ : افزونه ویرایشگر Unity Firebase به طور خودکار پروژه Xcode شما را برای بارگذاری پرونده نماد شما پیکربندی می کند.
Android : برای برنامه های Android خود که از IL2CPP استفاده می کنند ، Firebase CLI
crashlytics:symbols:upload
برای بارگذاری پرونده نماد خود.
برنامه خود را اجرا کنید. پس از اجرای برنامه ، ورود به سیستم دستگاه را تماشا کنید و منتظر بمانید تا استثناء از
CrashlyticsTester
شروع شود.iOS+ : مشاهده سیاهههای مربوط در قسمت پایین Xcode.
Android : با اجرای دستور زیر در ترمینال ، سیاهههای مربوط را مشاهده کنید:
adb logcat
.
برای دیدن تصادف تست خود به داشبورد Crashlytics کنسول Firebase بروید.
اگر کنسول را تازه کرده اید و هنوز شاهد سقوط تست بعد از پنج دقیقه نیستید ، ورود به سیستم اشکال زدایی را فعال کنید تا ببینید برنامه شما در حال ارسال گزارش های Crash است یا خیر.
و بس! Crashlytics اکنون برنامه شما را برای تصادفات نظارت می کند. برای مشاهده و بررسی تمام گزارش ها و آمار خود به داشبورد Crashlytics مراجعه کنید.
مراحل بعدی
- (توصیه می شود) برای برنامه های Android که از IL2CPP استفاده می کنند ، با جمع آوری گزارش های GWP-ASAN ، به اشکال زدایی در مورد خرابی های ناشی از خطاهای حافظه بومی کمک می کنید. این خطاهای مرتبط با حافظه می تواند با فساد حافظه در برنامه شما همراه باشد ، که عامل اصلی آسیب پذیری های امنیتی برنامه است. برای استفاده از این ویژگی اشکال زدایی ، اطمینان حاصل کنید که برنامه شما از آخرین SDK Crashlytics برای Unity (V10.7.0+) استفاده می کند و GWP-ASAN را صریحاً فعال کرده است (شما را ملزم به تغییر برنامه Android خود می کند).
- با Google Play ادغام شوید تا بتوانید گزارش های خرابی برنامه Android خود را توسط Google Play Track مستقیماً در داشبورد Crashlytics فیلتر کنید. این به شما امکان می دهد داشبورد خود را بهتر روی ساختهای خاص متمرکز کنید.
،
این QuickStart نحوه راه اندازی Firebase Crashlytics را در برنامه خود با Firebase Crashlytics SDK توضیح می دهد تا بتوانید گزارش های جامع تصادف را در کنسول Firebase دریافت کنید.
تنظیم Crashlytics به وظایف هم در کنسول Firebase و هم IDE شما نیاز دارد (مانند اضافه کردن یک پرونده پیکربندی Firebase و SDK Crashlytics ). برای به پایان رساندن تنظیم ، برای ارسال اولین گزارش تصادف خود به Firebase ، باید یک تصادف آزمایشی را مجبور کنید.
قبل از شروع
اگر قبلاً این کار را نکرده اید ، Firebase را به پروژه وحدت خود اضافه کنید . اگر پروژه وحدت ندارید ، می توانید یک برنامه نمونه را بارگیری کنید.
توصیه می شود : برای به دست آوردن خودکار سیاهههای مربوط به سوفرهای نان برای درک اقدامات کاربر منتهی به یک رویداد تصادف ، غیر کشنده یا ANR ، باید Google Analytics در پروژه Firebase خود فعال کنید.
اگر پروژه Firebase موجود شما Google Analytics فعال نکرده است ، می توانید Google Analytics از برگه ادغام خود فعال کنید
Firebase . > تنظیمات پروژه در کنسولاگر در حال ایجاد یک پروژه جدید Firebase هستید ، Google Analytics در طول گردش کار ایجاد پروژه فعال کنید.
مرحله 1 : SDK Crashlytics را به برنامه خود اضافه کنید
توجه داشته باشید که وقتی پروژه وحدت خود را در پروژه Firebase خود ثبت کردید ، ممکن است قبلاً Firebase Unity SDK را بارگیری کرده و بسته های شرح داده شده در مراحل زیر را اضافه کرده باشید.
Firebase Unity SDK را بارگیری کنید ، سپس SDK را در جایی مناسب از حالت فشرده جدا کنید. Firebase Unity SDK مخصوص پلتفرم نیست.
در پروژه Unity باز خود، به Assets > Import Package > Custom Package بروید.
از SDK از بین رفته ، برای وارد کردن Crashlytics SDK (
FirebaseCrashlytics.unitypackage
) را انتخاب کنید.برای استفاده از سیاهههای مربوط به خرده نان نیز SDK Firebase را برای Google Analytics به برنامه خود اضافه کنید (
FirebaseAnalytics.unitypackage
). اطمینان حاصل کنید که Google Analytics در پروژه Firebase شما فعال شده است .در پنجره Import Unity Package ، روی Import کلیک کنید.
مرحله 2 : Crashlytics اولیه کنید
یک اسکریپت C# جدید ایجاد کنید ، سپس آن را به یک
GameObject
در صحنه اضافه کنید.صحنه اول خود را باز کنید ، سپس یک
GameObject
خالی به نامCrashlyticsInitializer
ایجاد کنید.برای گزینه جدید روی Add Component در بازرس کلیک کنید.
اسکریپت
Crashlytics Init
خود را انتخاب کنید تا آن را به شی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 که از Backend Scripting Mono Unity استفاده می کنند ، این مراحل لازم نیست.
برای برنامه های Apple Platform ، این مراحل لازم نیست زیرا افزونه ویرایشگر Unity Firebase به طور خودکار پروژه Xcode شما را برای بارگذاری نمادها پیکربندی می کند.
Unity SDK 8.6.1 Crashlytics به طور خودکار شامل گزارش خرابی NDK است ، که به Crashlytics اجازه می دهد تا به طور خودکار Unity IL2CPP را در Android گزارش کند. با این حال ، برای دیدن آثار پشته نمادین برای خرابی های کتابخانه های بومی در داشبورد Crashlytics ، باید اطلاعات نماد را در زمان ساخت با استفاده از CLI Firebase بارگذاری کنید.
برای تنظیم بارگذاری نماد ، دستورالعمل های نصب Firebase CLI را دنبال کنید.
اگر قبلاً CLI را نصب کرده اید ، حتماً آخرین نسخه آن را به روز کنید .
مرحله 4 : پروژه خود را بسازید و نمادها را بارگذاری کنید
iOS+ (پلت فرم اپل)
از گفتگوی تنظیمات Build ، پروژه خود را به فضای کاری Xcode صادر کنید.
اپلیکیشن خود را بسازید
برای سیستم عامل های اپل ، افزونه ویرایشگر Unity Firebase به طور خودکار پروژه Xcode شما را برای تولید و بارگذاری یک فایل نماد سازگار با Crashlytics در سرورهای Firebase برای هر ساخت تنظیم می کند.
اندروید
از گفتگوی تنظیمات ساخت ، یکی از موارد زیر را انجام دهید:
برای ساختن پروژه خود به یک پروژه استودیوی اندرویدی صادرات کنید. یا
APK خود را مستقیماً از ویرایشگر وحدت بسازید.
قبل از ساخت ، اطمینان حاصل کنید که کادر انتخاب برای ایجاد نمادها. zip در گفتگوی تنظیمات Build بررسی شده است.
پس از اتمام ساخت شما ، یک پرونده نماد سازگار با 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:17104a2ced0c9b9b
در اینجا دو روش برای یافتن شناسه برنامه Firebase خود وجود دارد:
در پرونده
google-services.json
خود ، شناسه برنامه شما مقدارmobilesdk_app_id
است. یادر کنسول Firebase به تنظیمات پروژه خود بروید. به کارت برنامه های خود بروید ، سپس بر روی برنامه مورد نظر Firebase کلیک کنید تا شناسه برنامه آن را پیدا کنید.
PATH/TO/SYMBOLS : مسیر پرونده نماد تولید شده توسط CLI
دایرکتوری
unityLibrary/symbols
PATH/TO/SYMBOLS یک پروژه Android Studio صادر شده است که پس از ساختن برنامه از طریق Gradle یا Android Studio ، در ریشه پروژه صادر شده ایجاد می شود.APK را مستقیماً از درون وحدت ساخته شده است - PATH/TO/SYMBOLS مسیر پرونده نماد فشرده شده است که پس از اتمام ساخت شما در فهرست ریشه پروژه ایجاد شده است (برای مثال:
myproject/myapp-1.0-v100.symbols.zip
).
گزینه های پیشرفته برای استفاده از دستور Firebase CLI را برای تولید پرونده نماد و بارگذاری مشاهده کنید
پرچم توضیحات --generator=csym
به جای ژنراتور پیش فرض Breakpad از ژنراتور File File میراث CSYM استفاده می کند
برای استفاده توصیه نمی شود. توصیه می کنیم از ژنراتور فایل نماد پیش فرض استفاده کنید.
--generator=breakpad
از ژنراتور فایل نماد Breakpad استفاده می کند
توجه داشته باشید که پیش فرض برای تولید پرونده نماد Breakpad است. اگر اضافه کرده اید فقط از این پرچم استفاده کنید
symbolGenerator { csym() }
در پیکربندی ساخت خود و می خواهید آن را نادیده بگیرید تا به جای آن از breakpad استفاده کنید.--dry-run
پرونده های نماد را تولید می کند اما آنها را بارگذاری نمی کند
This flag is useful if you want to inspect the content of the files that are sent.
--debug
Provides additional debugging information
Step 5 : Force a test crash to finish setup
To finish setting up Crashlytics and see initial data in the Crashlytics dashboard of the Firebase console, you need to force a test crash.
Find an existing
GameObject
, then add to it the following script. This script will cause a test crash a few seconds after you run your app.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"); } } }
Build your app and upload symbol information after your build finishes.
iOS+ : The Firebase Unity Editor plugin automatically configures your Xcode project to upload your symbol file.
Android : For your Android apps that use IL2CPP, run the Firebase CLI
crashlytics:symbols:upload
command to upload your symbol file.
Run your app. Once your app is running, watch the device log and wait for the exception to trigger from the
CrashlyticsTester
.iOS+ : View logs in the bottom pane of Xcode.
Android : View logs by running the following command in the terminal:
adb logcat
.
Go to the Crashlytics dashboard of the Firebase console to see your test crash.
If you've refreshed the console and you're still not seeing the test crash after five minutes, enable debug logging to see if your app is sending crash reports.
و بس! Crashlytics is now monitoring your app for crashes. Visit the Crashlytics dashboard to view and investigate all your reports and statistics.
مراحل بعدی
- (Recommended) For Android apps that use IL2CPP, get help debugging crashes caused by native memory errors by collecting GWP-ASan reports . These memory-related errors can be associated with memory corruption within your app, which is the leading cause of app security vulnerabilities. To take advantage of this debugging feature, make sure your app uses the latest Crashlytics SDK for Unity (v10.7.0+) and has GWP-ASan explicitly enabled (requires you to modify your Android App Manifest ).
- Customize your crash report setup by adding opt-in reporting, logs, keys, and tracking of non-fatal errors.
- Integrate with Google Play so that you can filter your Android app's crash reports by Google Play track directly in the Crashlytics dashboard. This allows you to better focus your dashboard on specific builds.