این راهنما نحوه سفارشی کردن گزارشهای خرابی خود را با استفاده از Firebase Crashlytics SDK توضیح میدهد. بهطور پیشفرض، Crashlytics بهطور خودکار گزارشهای خرابی را برای همه کاربران برنامهتان جمعآوری میکند (شما میتوانید گزارش خودکار خرابی را غیرفعال کنید و بهجای آن ، گزارش انتخاب را برای کاربرانتان فعال کنید ). Crashlytics چهار مکانیسم ثبت نام را ارائه میکند: کلیدهای سفارشی ، گزارشهای ثبت سفارشی ، شناسههای کاربر و موارد استثنا .
کلیدهای سفارشی را اضافه کنید
کلیدهای سفارشی به شما کمک می کنند تا وضعیت خاص برنامه خود را که منجر به خرابی می شود، دریافت کنید. میتوانید جفتهای کلید/مقدار دلخواه را با گزارشهای خرابی خود مرتبط کنید، سپس از کلیدهای سفارشی برای جستجو و فیلتر کردن گزارشهای خرابی در کنسول Firebase استفاده کنید.
در داشبورد Crashlytics ، میتوانید مسائلی را جستجو کنید که با یک کلید سفارشی مطابقت دارند.
هنگامی که در حال بررسی یک مشکل خاص در کنسول هستید، میتوانید کلیدهای سفارشی مرتبط برای هر رویداد (زیربرگه کلیدها ) را مشاهده کنید و حتی رویدادها را با کلیدهای سفارشی فیلتر کنید (منوی فیلتر در بالای صفحه).
برای تنظیم جفت کلید/مقدار از روش نمونه setCustomKey
استفاده کنید. توجه داشته باشید که setCustomKey
برای پارامتر value
برای پذیرش هر آرگومان ابتدایی یا String
بارگذاری می شود. در اینجا چند نمونه آورده شده است:
Kotlin+KTX
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+KTX
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+KTX
برای 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+KTX
Firebase.crashlytics.log("message")
Java
FirebaseCrashlytics.getInstance().log("message");
تعیین شناسه های کاربر
برای تشخیص یک مشکل، اغلب مفید است که بدانید کدام یک از کاربران شما یک خرابی را تجربه کرده اند. Crashlytics شامل راهی برای شناسایی ناشناس کاربران در گزارشهای خرابی شما است.
برای افزودن شناسههای کاربری به گزارشهای خود، به هر کاربر یک شناسه منحصربهفرد به شکل شماره شناسه، نشانه یا مقدار هش اختصاص دهید:
Kotlin+KTX
Firebase.crashlytics.setUserId("user123456789")
Java
FirebaseCrashlytics.getInstance().setUserId("user123456789");
اگر بعد از تنظیم یک شناسه کاربری نیاز به پاک کردن آن داشتید، مقدار آن را به یک رشته خالی بازنشانی کنید. پاک کردن شناسه کاربر، سوابق موجود Crashlytics را حذف نمی کند. اگر نیاز به حذف سوابق مرتبط با شناسه کاربری دارید، با پشتیبانی Firebase تماس بگیرید .
(فقط Android NDK) متادیتا را به گزارشهای خرابی NDK اضافه کنید
میتوانید به صورت اختیاری هدر crashlytics.h
در کد C++ خود قرار دهید تا متادیتا را به گزارشهای خرابی NDK اضافه کنید، مانند کلیدهای سفارشی ، گزارشهای ثبت سفارشی ، شناسههای کاربر . همه این گزینه ها در این صفحه در بالا توضیح داده شده است.
crashlytics.h
به عنوان یک کتابخانه C++ فقط سرصفحه در مخزن Firebase Android SDK GitHub در دسترس است.
برای دستورالعملهای مربوط به استفاده از APIهای NDK C++، نظرات موجود در فایل هدر را بخوانید.
شامل گزارش های GWP-ASan برای رفع اشکال مشکلات خرابی حافظه
Crashlytics می تواند با جمع آوری گزارش های GWP-ASan به شما در رفع اشکال خرابی های ناشی از خطاهای حافظه بومی کمک کند. این خطاهای مربوط به حافظه می تواند با خراب شدن حافظه در برنامه شما مرتبط باشد که علت اصلی آسیب پذیری های امنیتی برنامه است.
وقتی روی جزئیات یک مشکل در داشبورد Crashlytics کلیک میکنید، میتوانید این دادهها را در برگه جدید «ردیابی پشته حافظه» مشاهده کنید.
همچنین میتوانید از سیگنال و فیلتر جدید «گزارش GWP-ASan» برای مشاهده سریع همه مشکلات مربوط به این دادهها استفاده کنید.
اگر به صراحت GWP-ASan را در برنامه خود فعال کنید و از Crashlytics SDK برای NDK v18.3.6+ (Firebase BoM v31.3.0+) استفاده کنید، می توانید گزارش های حافظه GWP-ASan را دریافت کنید. میتوانید راهاندازی GWP-ASan خود را با استفاده از نمونه کد بومی در مستندات Android آزمایش کنید.
استثناهای غیر کشنده را گزارش کنید
علاوه بر گزارش خودکار خرابیهای برنامه، Crashlytics به شما امکان میدهد استثناهای غیرمرگبار را ضبط کنید و دفعه بعد که برنامهتان راهاندازی شد، آنها را برای شما ارسال میکند.
از روش recordException
برای ثبت استثناهای غیر کشنده در بلوکهای catch
برنامه خود استفاده کنید. مثلا:
Kotlin+KTX
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 }
همه استثناهای ثبت شده به عنوان مسائل غیر کشنده در کنسول Firebase ظاهر می شوند. خلاصه شماره شامل تمام اطلاعات وضعیتی است که معمولاً از خرابیها دریافت میکنید، به همراه خرابیها بر اساس نسخه Android و دستگاه سختافزار.
Crashlytics استثناها را در یک رشته پسزمینه اختصاصی پردازش میکند تا تأثیر عملکرد بر برنامه شما را به حداقل برساند. برای کاهش ترافیک شبکه کاربران، Crashlytics استثناهای ثبت شده را دستهبندی میکند و دفعه بعد که برنامه راهاندازی میشود، آنها را ارسال میکند.
فعال کردن گزارش انتخابی
به طور پیش فرض، Crashlytics به طور خودکار گزارش های خرابی را برای همه کاربران برنامه شما جمع آوری می کند. برای اینکه کاربران کنترل بیشتری بر روی دادههایی که ارسال میکنند، داشته باشید، میتوانید با غیرفعال کردن گزارشدهی خودکار و ارسال دادهها به Crashlytics فقط در صورت انتخاب در کد، گزارش انتخاب را فعال کنید:
در بلوک
application
فایلAndroidManifest.xml
خود، یک تگmeta-data
اضافه کنید تا مجموعه خودکار خاموش شود:<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />
با فراخوانی لغو مجموعه داده های Crashlytics در زمان اجرا، مجموعه را برای کاربران منتخب فعال کنید. مقدار لغو در سراسر راه اندازی برنامه شما باقی می ماند بنابراین Crashlytics می تواند به طور خودکار گزارش ها را جمع آوری کند. برای انصراف از گزارش خودکار خرابی، مقدار
false
به عنوان مقدار نادیده بگیرید. وقتی رویfalse
تنظیم می شود، مقدار جدید تا اجرای بعدی برنامه اعمال نمی شود.Kotlin+KTX
Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)
Java
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);
دادههای Crash Insights را مدیریت کنید
Crash Insights به شما کمک میکند با مقایسه ردیابیهای پشته ناشناس خود با ردیابیهای سایر برنامههای Firebase، مشکلات را حل کنید و به شما اطلاع میدهد که آیا مشکل شما بخشی از یک روند بزرگتر است. برای بسیاری از مسائل، Crash Insights حتی منابعی را برای کمک به شما در رفع اشکال خرابی فراهم می کند.
Crash Insights از دادههای خرابی انبوه برای شناسایی روندهای رایج پایداری استفاده میکند. اگر ترجیح میدهید دادههای برنامه خود را به اشتراک نگذارید، میتوانید از منوی Crash Insights در بالای فهرست مشکلات Crashlytics در کنسول Firebase، از Crash Insights انصراف دهید.