در داشبورد Crashlytics ، میتوانید روی یک مشکل کلیک کنید و گزارش دقیقی از رویداد دریافت کنید. میتوانید این گزارشها را سفارشی کنید تا به شما در درک بهتر اتفاقات برنامهتان و شرایط پیرامون رویدادهای گزارششده به Crashlytics کمک کند.
برنامه خود را برای ثبت کلیدهای سفارشی ، پیامهای لاگ سفارشی و شناسههای کاربر ، مجهز کنید.
موارد استثنا را به Crashlytics گزارش دهید.
اگر برنامه شما از Firebase SDK برای Google Analytics استفاده میکند، به طور خودکار گزارشهای breadcrumb را دریافت کنید. این گزارشها به شما امکان مشاهده اقدامات کاربر را میدهند که منجر به یک رویداد جمعآوریشده توسط Crashlytics در برنامه شما میشود.
گزارش خودکار خرابی را غیرفعال کنید و گزارش اختیاری را برای کاربران خود فعال کنید . توجه داشته باشید که به طور پیشفرض، Crashlytics به طور خودکار گزارشهای خرابی را برای همه کاربران برنامه شما جمعآوری میکند.
اضافه کردن کلیدهای سفارشی
کلیدهای سفارشی به شما کمک میکنند تا وضعیت خاص برنامه خود را قبل از خرابی دریافت کنید. میتوانید جفتهای کلید/مقدار دلخواه را با گزارشهای خرابی خود مرتبط کنید، سپس از کلیدهای سفارشی برای جستجو و فیلتر کردن گزارشهای خرابی در کنسول Firebase استفاده کنید.
در داشبورد Crashlytics ، میتوانید مشکلاتی را که با یک کلید سفارشی مطابقت دارند، جستجو کنید.
وقتی در حال بررسی یک مشکل خاص در کنسول هستید، میتوانید کلیدهای سفارشی مرتبط با هر رویداد را مشاهده کنید (زیربرگه کلیدها ) و حتی رویدادها را بر اساس کلیدهای سفارشی فیلتر کنید (منوی فیلتر در بالای صفحه).
از متد نمونه setCustomKey برای تنظیم جفتهای کلید/مقدار استفاده کنید. توجه داشته باشید که setCustomKey برای پارامتر value ، برای پذیرش هرگونه آرگومان اولیه یا String سربارگذاری شده است. در اینجا چند مثال آورده شده است:
Kotlin
val crashlytics = Firebase.crashlytics crashlytics.setCustomKeys { key("my_string_key", "foo") // String value key("my_bool_key", true) // boolean value key("my_double_key", 1.0) // double value key("my_float_key", 1.0f) // float value key("my_int_key", 1) // int value }
Java
FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance(); crashlytics.setCustomKey("my_string_key", "foo" /* string value */); crashlytics.setCustomKey("my_bool_key", true /* boolean value */); crashlytics.setCustomKey("my_double_key", 1.0 /* double value */); crashlytics.setCustomKey("my_float_key", 1.0f /* float value */); crashlytics.setCustomKey("my_int_key", 1 /* int value */);
همچنین میتوانید با فراخوانی کلید و تنظیم مقدار متفاوت برای آن، مقدار یک کلید موجود را تغییر دهید. برای مثال:
Kotlin
val crashlytics = Firebase.crashlytics crashlytics.setCustomKeys { key("current_level", 3) key("last_UI_action", "logged_in") }
Java
FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance(); crashlytics.setCustomKey("current_level", 3); crashlytics.setCustomKey("last_UI_action", "logged_in");
با ارسال یک نمونه از CustomKeysAndValues به متد نمونه setCustomKeys ، جفتهای کلید/مقدار را به صورت گروهی اضافه کنید:
Kotlin
برای کاتلین، عملکرد موجود سادهتر از استفاده از سازنده CustomKeysAndValues است.
crashlytics.setCustomKeys { key("str_key", "hello") key("bool_key", true) key("int_key", 1) key("long_key", 1L) key("float_key", 1.0f) key("double_key", 1.0) }
Java
CustomKeysAndValues keysAndValues = new CustomKeysAndValues.Builder() .putString("string key", "string value") .putString("string key 2", "string value 2") .putBoolean("boolean key", True) .putBoolean("boolean key 2", False) .putFloat("float key", 1.01) .putFloat("float key 2", 2.02) .build(); FirebaseCrashlytics.getInstance().setCustomKeys(keysAndValues);
پیامهای لاگ سفارشی اضافه کنید
برای اینکه اطلاعات بیشتری در مورد رویدادهایی که منجر به خرابی میشوند، داشته باشید، میتوانید گزارشهای Crashlytics سفارشی را به برنامه خود اضافه کنید. Crashlytics گزارشها را با دادههای خرابی شما مرتبط میکند و آنها را در صفحه Crashlytics کنسول Firebase ، در زیر تب Logs نمایش میدهد.
log برای کمک به شناسایی مشکلات استفاده کنید. برای مثال:
Kotlin
Firebase.crashlytics.log("message")
Java
FirebaseCrashlytics.getInstance().log("message");
تنظیم شناسههای کاربر
برای تشخیص یک مشکل، اغلب مفید است که بدانید کدام یک از کاربران شما دچار خرابی خاصی شدهاند. Crashlytics روشی برای شناسایی ناشناس کاربران در گزارشهای خرابی شما ارائه میدهد.
برای افزودن شناسههای کاربری به گزارشهای خود، به هر کاربر یک شناسه منحصر به فرد در قالب شماره شناسه، توکن یا مقدار هش شده اختصاص دهید:
Kotlin
Firebase.crashlytics.setUserId("user123456789")
Java
FirebaseCrashlytics.getInstance().setUserId("user123456789");
اگر پس از تنظیم شناسه کاربری، نیاز به پاک کردن آن داشتید، مقدار آن را به یک رشته خالی تنظیم مجدد کنید. پاک کردن شناسه کاربری، رکوردهای موجود Crashlytics را حذف نمیکند. اگر نیاز به حذف رکوردهای مرتبط با شناسه کاربری دارید، با پشتیبانی Firebase تماس بگیرید .
(فقط اندروید NDK) افزودن فراداده به گزارشهای خرابی NDK
شما میتوانید به صورت اختیاری هدر crashlytics.h را در کد C++ خود قرار دهید تا فرادادههایی مانند کلیدهای سفارشی ، لاگهای سفارشی و شناسههای کاربر را به گزارشهای خرابی NDK اضافه کنید. همه این گزینهها در این صفحه در بالا توضیح داده شدهاند.
crashlytics.h به عنوان یک کتابخانه C++ فقط هدر در مخزن گیتهاب Firebase Android SDK موجود است.
برای دستورالعملهای استفاده از APIهای NDK C++، توضیحات موجود در فایل هدر را مطالعه کنید.
گزارشهای GWP-ASan را برای اشکالزدایی مشکلات خرابی حافظه وارد کنید
Crashlytics میتواند با جمعآوری گزارشهای GWP-ASan به شما در اشکالزدایی از خرابیهای ناشی از خطاهای حافظه بومی کمک کند. این خطاهای مرتبط با حافظه میتوانند با فساد حافظه در برنامه شما مرتبط باشند که علت اصلی آسیبپذیریهای امنیتی برنامه است.
شما میتوانید این دادهها را در برگه جدید «ردیابیهای پشته حافظه» مشاهده کنید، زمانی که روی جزئیات یک مشکل در داشبورد Crashlytics کلیک میکنید.
همچنین میتوانید از سیگنال و فیلتر جدید «گزارش GWP-ASan» برای مشاهده سریع همه مشکلات مربوط به این دادهها استفاده کنید.
اگر GWP-ASan را به طور صریح در برنامه خود فعال کنید و از Crashlytics SDK برای NDK نسخه 18.3.6+ ( Firebase BoM نسخه 31.3.0+) استفاده کنید، میتوانید گزارشهای حافظه GWP-ASan را دریافت کنید. میتوانید تنظیمات GWP-ASan خود را با استفاده از کد بومی نمونه در مستندات اندروید آزمایش کنید.
گزارش استثنائات غیرمهلک
علاوه بر گزارش خودکار خرابیهای برنامه، Crashlytics به شما امکان میدهد استثنائات غیرمهلک را ثبت کنید و دفعه بعد که برنامه شما راهاندازی میشود، آنها را برای شما ارسال کند.
از متد recordException برای ثبت خطاهای غیرمهلک در بلوکهای catch برنامه خود استفاده کنید. برای مثال:
Kotlin
try { methodThatThrows() } catch (e: Exception) { Firebase.crashlytics.recordException(e) // handle your exception here }
Java
try { methodThatThrows(); } catch (Exception e) { FirebaseCrashlytics.getInstance().recordException(e); // handle your exception here }
علاوه بر این، میتوانید کلیدهای سفارشی را به استثنای غیرمهلک خاص نیز پیوست کنید. برای مثال:
Kotlin
try { methodThatThrows() } catch (e: Exception) { Firebase.crashlytics.recordException(e) { key("string key", "string value") key("boolean key", true) key("float key", Float.MAX_VALUE) } // handle your exception here }
Java
try { methodThatThrows(); } catch (Exception e) { CustomKeysAndValues keysAndValues = new CustomKeysAndValues.Builder() .putString("string key", "string value") .putBoolean("boolean key", true) .putFloat("float key", Float.MAX_VALUE) .build(); FirebaseCrashlytics.getInstance().recordException(e, keysAndValues); // handle your exception here }
تمام استثنائات ثبتشده به عنوان مشکلات غیرمهلک در کنسول Firebase ظاهر میشوند. خلاصه مشکل شامل تمام اطلاعات وضعیتی است که معمولاً از خرابیها دریافت میکنید، همراه با جزئیات بر اساس نسخه اندروید و دستگاه سختافزاری.
Crashlytics استثنائات را در یک رشته پسزمینه اختصاصی پردازش میکند تا تأثیر عملکرد بر برنامه شما را به حداقل برساند. برای کاهش ترافیک شبکه کاربران شما، Crashlytics استثنائات ثبت شده را با هم دسته بندی کرده و دفعه بعد که برنامه اجرا میشود، آنها را ارسال میکند.
دریافت گزارشهای breadcrumb
لاگهای Breadcrumb درک بهتری از تعاملاتی که یک کاربر با برنامه شما داشته است، تا زمان وقوع یک کرش، خطای غیرمهلک یا رویداد ANR، به شما میدهند. این لاگها میتوانند هنگام تلاش برای بازتولید و اشکالزدایی یک مشکل مفید باشند.
گزارشهای Breadcrumb توسط Google Analytics پشتیبانی میشوند، بنابراین برای دریافت گزارشهای Breadcrumb، باید Google Analytics را برای پروژه Firebase خود فعال کنید و Firebase SDK را برای Google Analytics به برنامه خود اضافه کنید . پس از برآورده شدن این الزامات، گزارشهای Breadcrumb به طور خودکار هنگام مشاهده جزئیات یک مشکل، به همراه دادههای یک رویداد در برگه Logs قرار میگیرند.
کیت توسعه نرمافزار (SDK) مربوط به Analytics به طور خودکار رویداد screen_view را ثبت میکند که به گزارشهای breadcrumb امکان میدهد فهرستی از صفحات مشاهده شده قبل از رویداد crash، non-fatal یا ANR را نمایش دهند. گزارش breadcrumb screen_view حاوی پارامتر firebase_screen_class است.
لاگهای Breadcrumb همچنین با هر رویداد سفارشی که شما به صورت دستی در جلسه کاربر ثبت میکنید، از جمله دادههای پارامتر رویداد، پر میشوند. این دادهها میتوانند به نمایش مجموعهای از اقدامات کاربر که منجر به یک رویداد خرابی، غیرمهلک یا ANR میشوند، کمک کنند.
توجه داشته باشید که میتوانید جمعآوری و استفاده از دادههای Google Analytics را کنترل کنید ، که شامل دادههایی است که لاگهای breadcrumb را پر میکنند.
گزارشدهی عضویت را فعال کنید
به طور پیشفرض، Crashlytics به طور خودکار گزارشهای خرابی را برای همه کاربران برنامه شما جمعآوری میکند. برای اینکه کاربران کنترل بیشتری بر دادههایی که ارسال میکنند داشته باشند، میتوانید با غیرفعال کردن گزارش خودکار، گزارش اختیاری را فعال کنید و فقط زمانی که در کد خود انتخاب میکنید، دادهها را به Crashlytics ارسال کنید.
در بلوک
applicationفایلAndroidManifest.xmlخود، یک تگmeta-dataبرای غیرفعال کردن جمعآوری خودکار اضافه کنید:<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />با فراخوانی لغو جمعآوری دادههای Crashlytics در زمان اجرا، جمعآوری را برای کاربران منتخب فعال کنید. مقدار لغو شده در تمام راهاندازیهای بعدی برنامه شما باقی میماند تا Crashlytics بتواند بهطور خودکار گزارشها را برای آن کاربر جمعآوری کند.
Kotlin
Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)
Java
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);
اگر کاربر بعداً از جمعآوری دادهها انصراف دهد، میتوانید
falseبه عنوان مقدار جایگزین ارسال کنید که دفعهی بعدی که کاربر برنامه را اجرا میکند اعمال میشود و در تمام اجراهای بعدی برای آن کاربر ادامه خواهد داشت.
مدیریت دادههای Crash Insights
Crash Insights با مقایسهی ردپاهای پشتهی ناشناسشدهی شما با ردپاهای سایر برنامههای Firebase و اطلاعرسانی به شما در مورد اینکه آیا مشکل شما بخشی از یک روند بزرگتر است یا خیر، به شما در حل مشکلات کمک میکند. برای بسیاری از مشکلات، Crash Insights حتی منابعی را برای کمک به شما در اشکالزدایی از خرابی ارائه میدهد.
Crash Insights از دادههای خرابی تجمیعشده برای شناسایی روندهای پایداری رایج استفاده میکند. اگر ترجیح میدهید دادههای برنامه خود را به اشتراک نگذارید، میتوانید از منوی Crash Insights در بالای لیست مشکلات Crashlytics خود در کنسول Firebase ، از Crash Insights انصراف دهید.