| প্ল্যাটফর্ম নির্বাচন করুন: | iOS+ অ্যান্ড্রয়েড ফ্লাটার ইউনিটি |
Crashlytics ড্যাশবোর্ডে, আপনি কোনো একটি ইস্যুতে ক্লিক করে একটি বিস্তারিত ইভেন্ট রিপোর্ট পেতে পারেন। আপনার অ্যাপে কী ঘটছে এবং Crashlytics এ রিপোর্ট করা ইভেন্টগুলোর পারিপার্শ্বিক পরিস্থিতি আরও ভালোভাবে বোঝার জন্য আপনি সেই রিপোর্টগুলো কাস্টমাইজ করতে পারেন।
আপনার অ্যাপে কাস্টম কী , কাস্টম লগ মেসেজ এবং ব্যবহারকারী শনাক্তকারী লগ করার ব্যবস্থা করুন।
Crashlytics কে ব্যতিক্রমগুলো সম্পর্কে জানান।
আপনার অ্যাপ যদি Google Analytics জন্য Firebase SDK ব্যবহার করে, তাহলে স্বয়ংক্রিয়ভাবে ব্রেডক্রাম্ব লগ পান। এই লগগুলি আপনাকে আপনার অ্যাপে 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");
setCustomKeys ইনস্ট্যান্স মেথডে CustomKeysAndValues এর একটি ইনস্ট্যান্স পাস করে একসাথে একাধিক কী-ভ্যালু পেয়ার যোগ করুন:
Kotlin
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 এই লগগুলোকে আপনার ক্র্যাশ ডেটার সাথে সংযুক্ত করে এবং Firebase কনসোলের Crashlytics পৃষ্ঠার ' লগস' ট্যাবের অধীনে সেগুলো প্রদর্শন করে।
সমস্যা চিহ্নিত করতে log ব্যবহার করুন। উদাহরণস্বরূপ:
Kotlin
Firebase.crashlytics.log("message")
Java
FirebaseCrashlytics.getInstance().log("message");
ব্যবহারকারী শনাক্তকারী সেট করুন
কোনো সমস্যা নির্ণয় করার জন্য, আপনার কোন ব্যবহারকারীরা একটি নির্দিষ্ট ক্র্যাশের সম্মুখীন হয়েছেন তা জানা প্রায়শই সহায়ক হয়। Crashlytics আপনার ক্র্যাশ রিপোর্টে ব্যবহারকারীদের পরিচয় গোপন রেখে শনাক্ত করার একটি উপায় রয়েছে।
আপনার রিপোর্টে ইউজার আইডি যোগ করতে, প্রতিটি ইউজারকে আইডি নম্বর, টোকেন বা হ্যাশ করা মানের আকারে একটি অনন্য শনাক্তকারী প্রদান করুন:
Kotlin
Firebase.crashlytics.setUserId("user123456789")
Java
FirebaseCrashlytics.getInstance().setUserId("user123456789");
যদি আপনি কোনো ইউজার আইডেন্টিফায়ার সেট করার পর তা মুছে ফেলতে চান, তাহলে ভ্যালুটি একটি ফাঁকা স্ট্রিং-এ রিসেট করুন। ইউজার আইডেন্টিফায়ার মুছে ফেললে বিদ্যমান Crashlytics রেকর্ডগুলো মুছে যায় না। যদি কোনো ইউজার আইডির সাথে যুক্ত রেকর্ড ডিলিট করার প্রয়োজন হয়, তাহলে ফায়ারবেস সাপোর্টের সাথে যোগাযোগ করুন ।
(শুধুমাত্র অ্যান্ড্রয়েড এনডিকে-এর জন্য) এনডিকে ক্র্যাশ রিপোর্টে মেটাডেটা যোগ করুন
আপনি ঐচ্ছিকভাবে আপনার C++ কোডে crashlytics.h হেডারটি অন্তর্ভুক্ত করে NDK ক্র্যাশ রিপোর্টে মেটাডেটা যোগ করতে পারেন, যেমন কাস্টম কী , কাস্টম লগ , ব্যবহারকারী শনাক্তকারী । এই সমস্ত বিকল্পগুলি উপরে এই পৃষ্ঠায় বর্ণনা করা হয়েছে।
crashlytics.h ফায়ারবেস অ্যান্ড্রয়েড এসডিকে গিটহাব রিপোজিটরিতে একটি হেডার-অনলি সি++ লাইব্রেরি হিসেবে উপলব্ধ।
NDK C++ API ব্যবহারের নির্দেশাবলীর জন্য হেডার ফাইলের মন্তব্যগুলো পড়ুন।
মেমরি করাপশন সমস্যা ডিবাগ করতে GWP-ASan রিপোর্ট অন্তর্ভুক্ত করুন
Crashlytics GWP-ASan রিপোর্ট সংগ্রহ করার মাধ্যমে নেটিভ মেমরি ত্রুটির কারণে হওয়া ক্র্যাশ ডিবাগ করতে আপনাকে সাহায্য করতে পারে। এই মেমরি-সম্পর্কিত ত্রুটিগুলো আপনার অ্যাপের মেমরি করাপশনের সাথে যুক্ত থাকতে পারে, যা অ্যাপের নিরাপত্তা দুর্বলতার প্রধান কারণ।
Crashlytics ড্যাশবোর্ডে কোনো সমস্যার বিবরণে ক্লিক করলে, আপনি একটি নতুন 'মেমরি স্ট্যাক ট্রেসেস' ট্যাবে এই ডেটা দেখতে পারবেন।
এছাড়াও আপনি নতুন "GWP-ASan রিপোর্ট" সিগন্যাল এবং ফিল্টার ব্যবহার করে এই ডেটার মাধ্যমে সমস্ত ইস্যু দ্রুত দেখতে পারেন।
আপনার অ্যাপে স্পষ্টভাবে GWP-ASan সক্রিয় করলে এবং NDK v18.3.6+ ( Firebase BoM v31.3.0+) এর জন্য Crashlytics SDK ব্যবহার করলে, আপনি GWP-ASan মেমরি রিপোর্ট পেতে পারেন। আপনি অ্যান্ড্রয়েড ডকুমেন্টেশনে থাকা উদাহরণ নেটিভ কোড ব্যবহার করে আপনার GWP-ASan সেটআপ পরীক্ষা করতে পারেন।
অ-মারাত্মক ব্যতিক্রমগুলি রিপোর্ট করুন
আপনার অ্যাপের ক্র্যাশগুলো স্বয়ংক্রিয়ভাবে রিপোর্ট করার পাশাপাশি, Crashlytics আপনাকে নন-ফেটাল এক্সেপশনগুলো রেকর্ড করতে দেয় এবং পরবর্তীবার আপনার অ্যাপ চালু হওয়ার সময় সেগুলো আপনাকে পাঠিয়ে দেয়।
আপনার অ্যাপের catch ব্লকগুলিতে নন-ফেটাল এক্সেপশন রেকর্ড করতে recordException মেথডটি ব্যবহার করুন। উদাহরণস্বরূপ:
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 লগ করা এক্সেপশনগুলোকে একসাথে ব্যাচ করে এবং পরবর্তীবার অ্যাপটি চালু করার সময় সেগুলো পাঠিয়ে দেয়।
ব্রেডক্রাম্ব লগ পান
কোনো ক্র্যাশ, নন-ফেটাল বা এএনআর ইভেন্টের আগে একজন ব্যবহারকারী আপনার অ্যাপের সাথে কী ধরনের ইন্টারঅ্যাকশন করেছেন, তা ব্রেডক্রাম্ব লগ থেকে আরও ভালোভাবে বোঝা যায়। কোনো সমস্যা পুনরুৎপাদন এবং ডিবাগ করার সময় এই লগগুলো সহায়ক হতে পারে।
ব্রেডক্রাম্ব লগ গুগল অ্যানালিটিক্স দ্বারা চালিত হয়, তাই ব্রেডক্রাম্ব লগ পেতে হলে আপনাকে আপনার ফায়ারবেস প্রজেক্টের জন্য গুগল অ্যানালিটিক্স সক্রিয় করতে হবে এবং আপনার অ্যাপে Google Analytics জন্য ফায়ারবেস এসডিকে (SDK) যোগ করতে হবে । এই শর্তগুলো পূরণ হয়ে গেলে, আপনি যখন কোনো ইস্যুর বিবরণ দেখবেন, তখন লগস ট্যাবের মধ্যে ইভেন্টের ডেটার সাথে ব্রেডক্রাম্ব লগ স্বয়ংক্রিয়ভাবে অন্তর্ভুক্ত হয়ে যাবে।
Analytics এসডিকে স্বয়ংক্রিয়ভাবে ` screen_view ইভেন্টটি লগ করে , যা ব্রেডক্রাম্ব লগ-কে ক্র্যাশ, নন-ফেটাল বা এএনআর ইভেন্টের আগে দেখা স্ক্রিনগুলির একটি তালিকা দেখাতে সক্ষম করে। একটি screen_view ব্রেডক্রাম্ব লগে একটি firebase_screen_class প্যারামিটার থাকে।
ব্যবহারকারীর সেশনের মধ্যে আপনি ম্যানুয়ালি লগ করা যেকোনো কাস্টম ইভেন্ট , ইভেন্টের প্যারামিটার ডেটা সহ, ব্রেডক্রাম্ব লগে যুক্ত হয়। এই ডেটা একটি ক্র্যাশ, নন-ফেটাল বা এএনআর ইভেন্টের দিকে পরিচালিত ব্যবহারকারীর ধারাবাহিক কার্যকলাপ দেখাতে সাহায্য করতে পারে।
মনে রাখবেন যে আপনি Google Analytics ডেটার সংগ্রহ এবং ব্যবহার নিয়ন্ত্রণ করতে পারেন, যার মধ্যে ব্রেডক্রাম্ব লগ পূরণকারী ডেটাও অন্তর্ভুক্ত।
অপ্ট-ইন রিপোর্টিং সক্ষম করুন
ডিফল্টরূপে, Crashlytics স্বয়ংক্রিয়ভাবে আপনার অ্যাপের সকল ব্যবহারকারীর জন্য ক্র্যাশ রিপোর্ট সংগ্রহ করে। ব্যবহারকারীদের পাঠানো ডেটার উপর আরও বেশি নিয়ন্ত্রণ দিতে, আপনি স্বয়ংক্রিয় রিপোর্টিং নিষ্ক্রিয় করে অপ্ট-ইন রিপোর্টিং সক্ষম করতে পারেন এবং শুধুমাত্র আপনার কোডে নিজের ইচ্ছামত Crashlytics ডেটা পাঠাতে পারেন।
আপনার
AndroidManifest.xmlফাইলেরapplicationব্লকে, স্বয়ংক্রিয় সংগ্রহ বন্ধ করতে একটি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পাস করতে পারেন, যা ব্যবহারকারী পরবর্তীবার অ্যাপটি চালু করার সময় প্রযোজ্য হবে এবং সেই ব্যবহারকারীর জন্য এর পরের সমস্ত লঞ্চ জুড়ে স্থায়ী থাকবে।
ক্র্যাশ ইনসাইটস ডেটা পরিচালনা করুন
ক্র্যাশ ইনসাইটস আপনার অ্যানোনিমাইজড স্ট্যাক ট্রেসকে অন্যান্য ফায়ারবেস অ্যাপের ট্রেসের সাথে তুলনা করে সমস্যা সমাধানে সাহায্য করে এবং আপনার সমস্যাটি কোনো বৃহত্তর প্রবণতার অংশ কিনা তা জানিয়ে দেয়। অনেক সমস্যার ক্ষেত্রে, ক্র্যাশ ইনসাইটস এমনকি ক্র্যাশটি ডিবাগ করতে সাহায্য করার জন্য রিসোর্সও সরবরাহ করে।
ক্র্যাশ ইনসাইটস সাধারণ স্থিতিশীলতার প্রবণতা শনাক্ত করতে একত্রিত ক্র্যাশ ডেটা ব্যবহার করে। আপনি যদি আপনার অ্যাপের ডেটা শেয়ার করতে না চান, তাহলে Firebase কনসোলে আপনার Crashlytics ইস্যু তালিকার শীর্ষে থাকা ক্র্যাশ ইনসাইটস মেনু থেকে এটি ব্যবহার করা থেকে বিরত থাকতে পারেন।
পরবর্তী পদক্ষেপ
- উন্নত বিশ্লেষণ এবং বিভিন্ন ফিচারের জন্য, যেমন আপনার ডেটা কোয়েরি করা, কাস্টম ড্যাশবোর্ড তৈরি করা এবং কাস্টম অ্যালার্ট সেট আপ করার জন্য, আপনার ডেটা BigQuery বা Cloud Logging এ এক্সপোর্ট করুন ।