আপনার Firebase 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

কোটলিনের জন্য, বিদ্যমান কার্যকারিতাটি 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 রেকর্ডগুলি মুছে যাবে না। যদি আপনার কোন ব্যবহারকারী আইডির সাথে সম্পর্কিত রেকর্ডগুলি মুছে ফেলার প্রয়োজন হয়, তাহলে Firebase সহায়তার সাথে যোগাযোগ করুন

(শুধুমাত্র Android NDK) NDK ক্র্যাশ রিপোর্টে মেটাডেটা যোগ করুন

আপনি ঐচ্ছিকভাবে আপনার C++ কোডে crashlytics.h হেডার অন্তর্ভুক্ত করতে পারেন যাতে NDK ক্র্যাশ রিপোর্টে মেটাডেটা যোগ করা যায়, যেমন custom keys , custom logs , user identifiers । এই সমস্ত বিকল্পগুলি উপরের এই পৃষ্ঠায় বর্ণনা করা হয়েছে।

crashlytics.h Firebase Android SDK GitHub Repository- তে শুধুমাত্র হেডার-ভিত্তিক C++ লাইব্রেরি হিসেবে উপলব্ধ।

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 মেমরি রিপোর্ট পেতে পারেন। আপনি Android ডকুমেন্টেশনে উদাহরণ নেটিভ কোড ব্যবহার করে আপনার 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 লগ করা ব্যতিক্রমগুলিকে একসাথে ব্যাচ করে এবং পরের বার অ্যাপটি চালু হওয়ার সময় সেগুলি পাঠায়।

ব্রেডক্রাম্ব লগ পান

ব্রেডক্রাম্ব লগগুলি আপনাকে আপনার অ্যাপের সাথে ব্যবহারকারীর ইন্টারঅ্যাকশন সম্পর্কে আরও ভাল ধারণা দেয় যা ক্র্যাশ, নন-ফ্যাটাল, বা ANR ইভেন্টের দিকে পরিচালিত করে। কোনও সমস্যা পুনরুত্পাদন এবং ডিবাগ করার চেষ্টা করার সময় এই লগগুলি সহায়ক হতে পারে।

ব্রেডক্রাম্ব লগগুলি গুগল অ্যানালিটিক্স দ্বারা চালিত হয়, তাই ব্রেডক্রাম্ব লগ পেতে, আপনাকে আপনার ফায়ারবেস প্রকল্পের জন্য গুগল অ্যানালিটিক্স সক্ষম করতে হবে এবং আপনার অ্যাপে Google Analytics জন্য ফায়ারবেস SDK যুক্ত করতে হবে । একবার এই প্রয়োজনীয়তাগুলি পূরণ হয়ে গেলে, যখন আপনি কোনও সমস্যার বিবরণ দেখেন তখন লগ ট্যাবের মধ্যে ব্রেডক্রাম্ব লগগুলি স্বয়ংক্রিয়ভাবে ইভেন্টের ডেটার সাথে অন্তর্ভুক্ত হয়ে যায়।

Analytics SDK স্বয়ংক্রিয়ভাবে screen_view ইভেন্ট লগ করে যা ব্রেডক্রাম্ব লগগুলিকে ক্র্যাশের আগে দেখা, নন-ফ্যাটাল, বা ANR ইভেন্টের স্ক্রিনের তালিকা দেখাতে সক্ষম করে। একটি screen_view breadcrumb লগে একটি firebase_screen_class প্যারামিটার থাকে।

ব্যবহারকারীর সেশনের মধ্যে ম্যানুয়ালি লগ করা যেকোনো কাস্টম ইভেন্ট দিয়ে ব্রেডক্রাম্ব লগগুলি পূর্ণ করা হয়, যার মধ্যে ইভেন্টের প্যারামিটার ডেটাও অন্তর্ভুক্ত থাকে। এই ডেটা ব্যবহারকারীর ক্র্যাশ, নন-ফ্যাটাল বা ANR ইভেন্টের দিকে পরিচালিত করে এমন একাধিক ক্রিয়া দেখাতে সাহায্য করতে পারে।

মনে রাখবেন যে আপনি Google Analytics ডেটা সংগ্রহ এবং ব্যবহার নিয়ন্ত্রণ করতে পারেন, যার মধ্যে ব্রেডক্রাম্ব লগ পূরণ করে এমন ডেটা অন্তর্ভুক্ত রয়েছে।

অপ্ট-ইন রিপোর্টিং সক্ষম করুন

ডিফল্টরূপে, Crashlytics আপনার সমস্ত অ্যাপ ব্যবহারকারীদের জন্য স্বয়ংক্রিয়ভাবে ক্র্যাশ রিপোর্ট সংগ্রহ করে। ব্যবহারকারীদের তাদের প্রেরিত ডেটার উপর আরও নিয়ন্ত্রণ দেওয়ার জন্য, আপনি স্বয়ংক্রিয় রিপোর্টিং অক্ষম করে এবং আপনার কোডে যখন আপনি চান তখনই Crashlytics এ ডেটা প্রেরণ করে অপ্ট-ইন রিপোর্টিং সক্ষম করতে পারেন।

  1. আপনার AndroidManifest.xml ফাইলের application ব্লকে, স্বয়ংক্রিয় সংগ্রহ বন্ধ করতে একটি meta-data ট্যাগ যোগ করুন:

    <meta-data
        android:name="firebase_crashlytics_collection_enabled"
        android:value="false" />
    
  2. রানটাইমে Crashlytics ডেটা সংগ্রহ ওভাররাইড কল করে নির্বাচিত ব্যবহারকারীদের জন্য সংগ্রহ সক্ষম করুন। ওভাররাইড মান আপনার অ্যাপের পরবর্তী সমস্ত লঞ্চে বজায় থাকে যাতে Crashlytics স্বয়ংক্রিয়ভাবে সেই ব্যবহারকারীর জন্য প্রতিবেদন সংগ্রহ করতে পারে।

    Kotlin

    Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)

    Java

    FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);

    যদি ব্যবহারকারী পরে ডেটা সংগ্রহ থেকে বেরিয়ে যান, তাহলে আপনি ওভাররাইড মান হিসেবে false পাস করতে পারেন, যা ব্যবহারকারী পরের বার অ্যাপ চালু করার সময় প্রযোজ্য হবে এবং সেই ব্যবহারকারীর জন্য পরবর্তী সমস্ত লঞ্চে এটি বজায় থাকবে।

ক্র্যাশ ইনসাইট ডেটা পরিচালনা করুন

ক্র্যাশ ইনসাইটস আপনার বেনামী স্ট্যাক ট্রেসগুলিকে অন্যান্য ফায়ারবেস অ্যাপের ট্রেসের সাথে তুলনা করে এবং আপনার সমস্যাটি কোনও বৃহত্তর ট্রেন্ডের অংশ কিনা তা আপনাকে জানিয়ে সমস্যা সমাধানে সহায়তা করে। অনেক সমস্যার জন্য, ক্র্যাশ ইনসাইটস এমনকি ক্র্যাশ ডিবাগ করতে সহায়তা করার জন্য সংস্থান সরবরাহ করে।

ক্র্যাশ ইনসাইটস সাধারণ স্থিতিশীলতার প্রবণতা সনাক্ত করতে সমষ্টিগত ক্র্যাশ ডেটা ব্যবহার করে। আপনি যদি আপনার অ্যাপের ডেটা শেয়ার না করতে চান, তাহলে আপনি Firebase কনসোলে আপনার Crashlytics সমস্যা তালিকার শীর্ষে থাকা Crash Insights মেনু থেকে Crash Insights থেকে অপ্ট-আউট করতে পারেন।