এই পৃষ্ঠাটি Crashlytics ব্যবহার করার বিষয়ে প্রায়শই জিজ্ঞাসিত প্রশ্নের সমস্যা সমাধানে সহায়তা এবং উত্তর প্রদান করে। আপনি যা খুঁজছেন তা খুঁজে না পেলে বা অতিরিক্ত সাহায্যের প্রয়োজন হলে, Firebase সহায়তার সাথে যোগাযোগ করুন।
সাধারণ সমস্যা সমাধান/FAQ
Firebase কনসোলে আপনার ইস্যু টেবিলে তালিকাভুক্ত সমস্যার জন্য আপনি দুটি ভিন্ন ফর্ম্যাট লক্ষ্য করতে পারেন। এবং আপনি আপনার কিছু সমস্যার মধ্যে "ভেরিয়েন্ট" নামক একটি বৈশিষ্ট্যও লক্ষ্য করতে পারেন। এখানে কেন!
2023 সালের গোড়ার দিকে, আমরা ইভেন্টগুলিকে গ্রুপ করার জন্য একটি উন্নত বিশ্লেষণ ইঞ্জিনের পাশাপাশি একটি আপডেট করা ডিজাইন এবং নতুন সমস্যাগুলির জন্য কিছু উন্নত বৈশিষ্ট্য নিয়ে এসেছি (যেমন বৈকল্পিক!)। সমস্ত বিবরণের জন্য আমাদের সাম্প্রতিক ব্লগ পোস্টটি দেখুন, তবে আপনি হাইলাইটগুলির জন্য নীচে পড়তে পারেন।
Crashlytics আপনার অ্যাপ থেকে সমস্ত ইভেন্ট বিশ্লেষণ করে (যেমন ক্র্যাশ, নন-ফেটাল, এবং ANR) এবং ইভেন্টের গ্রুপ তৈরি করে যাকে সমস্যা বলা হয় — একটি ইস্যুতে সমস্ত ইভেন্টের ব্যর্থতার একটি সাধারণ পয়েন্ট থাকে।
এই সমস্যাগুলির মধ্যে ইভেন্টগুলিকে গোষ্ঠীভুক্ত করার জন্য, উন্নত বিশ্লেষণ ইঞ্জিন এখন ইভেন্টের অনেক দিককে দেখে, যার মধ্যে স্ট্যাক ট্রেসের ফ্রেম, ব্যতিক্রম বার্তা, ত্রুটি কোড এবং অন্যান্য প্ল্যাটফর্ম বা ত্রুটির ধরন বৈশিষ্ট্যগুলি রয়েছে৷
যাইহোক, ইভেন্টের এই গ্রুপের মধ্যে, ব্যর্থতার দিকে পরিচালিত স্ট্যাক ট্রেসগুলি ভিন্ন হতে পারে। একটি ভিন্ন স্ট্যাক ট্রেস একটি ভিন্ন মূল কারণ বোঝাতে পারে। একটি ইস্যুতে এই সম্ভাব্য পার্থক্যটি উপস্থাপন করার জন্য, আমরা এখন সমস্যার মধ্যে ভেরিয়েন্ট তৈরি করি - প্রতিটি ভেরিয়েন্ট হল একটি ইস্যুতে ইভেন্টগুলির একটি সাব-গ্রুপ যার একই ব্যর্থতা পয়েন্ট এবং একই স্ট্যাক ট্রেস রয়েছে। ভেরিয়েন্টের সাহায্যে, আপনি একটি সমস্যার মধ্যে সবচেয়ে সাধারণ স্ট্যাক ট্রেসগুলি ডিবাগ করতে পারেন এবং বিভিন্ন মূল কারণগুলি ব্যর্থতার দিকে নিয়ে যাচ্ছে কিনা তা নির্ধারণ করতে পারেন।
এই উন্নতিগুলির সাথে আপনি যা অনুভব করবেন তা এখানে:
সংশোধিত মেটাডেটা ইস্যু সারির মধ্যে প্রদর্শিত হয়
আপনার অ্যাপে সমস্যাগুলি বোঝা এবং ট্রাইজ করা এখন সহজ।কম ডুপ্লিকেট সমস্যা
একটি লাইন নম্বর পরিবর্তনের ফলে একটি নতুন সমস্যা হয় না।বিভিন্ন মূল কারণ সহ জটিল সমস্যার সহজ ডিবাগিং
একটি সমস্যার মধ্যে সবচেয়ে সাধারণ স্ট্যাক ট্রেস ডিবাগ করতে ভেরিয়েন্ট ব্যবহার করুন।আরও অর্থপূর্ণ সতর্কতা এবং সংকেত
একটি নতুন সমস্যা আসলে একটি নতুন বাগ প্রতিনিধিত্ব করে।আরো শক্তিশালী অনুসন্ধান
প্রতিটি সমস্যায় আরও অনুসন্ধানযোগ্য মেটাডেটা থাকে, যেমন ব্যতিক্রমের ধরন এবং প্যাকেজের নাম।
এই উন্নতিগুলি কীভাবে ঘটছে তা এখানে:
যখন আমরা আপনার অ্যাপ থেকে নতুন ইভেন্টগুলি পাই, তখন আমরা তা একটি বিদ্যমান সমস্যার সাথে মেলে কিনা তা পরীক্ষা করব।
যদি কোন মিল না থাকে, আমরা স্বয়ংক্রিয়ভাবে ইভেন্টে আমাদের স্মার্ট ইভেন্ট-গ্রুপিং অ্যালগরিদম প্রয়োগ করব এবং পরিমার্জিত মেটাডেটা ডিজাইনের সাথে একটি নতুন সমস্যা তৈরি করব।
এটিই প্রথম বড় আপডেট যা আমরা আমাদের ইভেন্ট গ্রুপিংয়ে তৈরি করছি। আপনার যদি প্রতিক্রিয়া থাকে বা কোনো সমস্যার সম্মুখীন হন, তাহলে অনুগ্রহ করে একটি প্রতিবেদন দাখিল করে আমাদের জানান।
আপনি যদি ক্র্যাশ-মুক্ত মেট্রিক্স (যেমন ক্র্যাশ-মুক্ত ব্যবহারকারী এবং সেশন) এবং/অথবা বেগ সতর্কতা দেখতে না পান, তাহলে নিশ্চিত করুন যে আপনি ব্যবহার করছেনCrashlytics SDK 11.7.0+।
আপনি যদি ব্রেডক্রাম্ব লগ দেখতে না পান, তাহলে আমরা Google Analytics জন্য আপনার অ্যাপের কনফিগারেশন চেক করার পরামর্শ দিই। আপনি নিম্নলিখিত প্রয়োজনীয়তা পূরণ নিশ্চিত করুন:
আপনি আপনার Firebase প্রকল্পে Google Analytics সক্ষম করেছেন ।
আপনি Google Analytics এর জন্য ডেটা শেয়ারিং সক্ষম করেছেন। আপনার Analytics ডেটা শেয়ারিং সেটিংস পরিচালনা করুন -এ এই সেটিং সম্পর্কে আরও জানুন
আপনি করেছেনGoogle Analytics এর জন্য Firebase SDK যোগ করা হয়েছেআপনার অ্যাপে। এই SDK অবশ্যই Crashlytics SDK ছাড়াও যোগ করতে হবে।
আপনি ব্যবহার করছেনসর্বশেষ Firebase SDK সংস্করণআপনি আপনার অ্যাপে যে সমস্ত পণ্য ব্যবহার করেন তার জন্য।
আপনি যদি ইউনিটি IL2CPP ব্যবহার করেন এবং আপনি অপ্রত্যয়িত স্ট্যাক ট্রেস দেখতে পান, তাহলে নিম্নলিখিতগুলি চেষ্টা করুন:
আপনি Crashlytics Unity SDK-এর v8.6.1 বা উচ্চতর ব্যবহার করছেন কিনা তা নিশ্চিত করুন।
আপনার প্রতীক ফাইল তৈরি এবং আপলোড করার জন্য আপনি Firebase CLI
crashlytics:symbols:upload
কমান্ডের জন্য সেট আপ করেছেন এবং চালাচ্ছেন তা নিশ্চিত করুন।আপনি যখনই একটি রিলিজ বিল্ড তৈরি করবেন বা Firebase কনসোলে প্রতীকী স্ট্যাকের ট্রেস দেখতে চান এমন কোনো বিল্ড তৈরি করার সময় আপনাকে এই CLI কমান্ডটি চালাতে হবে। পঠনযোগ্য ক্র্যাশ রিপোর্ট পৃষ্ঠায় আরও জানুন।
হ্যাঁ, Crashlytics IL2CPP ব্যবহার করে এমন আপনার অ্যাপের জন্য প্রতীকী স্ট্যাক ট্রেস প্রদর্শন করতে পারে। এই ক্ষমতা Android বা Apple প্ল্যাটফর্মে প্রকাশিত অ্যাপগুলির জন্য উপলব্ধ৷ আপনাকে যা করতে হবে তা এখানে:
আপনি Crashlytics Unity SDK-এর v8.6.0 বা উচ্চতর ব্যবহার করছেন কিনা তা নিশ্চিত করুন।
আপনার প্ল্যাটফর্মের জন্য প্রয়োজনীয় কাজগুলি সম্পূর্ণ করুন:
অ্যাপল প্ল্যাটফর্ম অ্যাপের জন্য : কোন বিশেষ কর্মের প্রয়োজন নেই। Apple প্ল্যাটফর্ম অ্যাপের জন্য, Firebase Unity Editor প্লাগইন স্বয়ংক্রিয়ভাবে আপনার Xcode প্রজেক্টকে চিহ্ন আপলোড করতে কনফিগার করে।
অ্যান্ড্রয়েড অ্যাপ্লিকেশানগুলির জন্য : নিশ্চিত করুন যে আপনি আপনার প্রতীক ফাইল তৈরি এবং আপলোড করতে Firebase CLI
crashlytics:symbols:upload
কমান্ডের জন্য সেট আপ করেছেন এবং চালাচ্ছেন।আপনি যখনই একটি রিলিজ বিল্ড তৈরি করবেন বা Firebase কনসোলে প্রতীকী স্ট্যাকের ট্রেস দেখতে চান এমন কোনো বিল্ড তৈরি করার সময় আপনাকে এই CLI কমান্ডটি চালাতে হবে। পঠনযোগ্য ক্র্যাশ রিপোর্ট পৃষ্ঠায় আরও জানুন।
ক্র্যাশ-মুক্ত মানটি এমন ব্যবহারকারীদের শতাংশের প্রতিনিধিত্ব করে যারা আপনার অ্যাপের সাথে জড়িত কিন্তু একটি নির্দিষ্ট সময়ের মধ্যে ক্র্যাশ হয়নি ।
ক্র্যাশ-মুক্ত ব্যবহারকারীর শতাংশ গণনা করার সূত্রটি এখানে। এর ইনপুট মান Google Analytics দ্বারা প্রদান করা হয়।
CRASH_FREE_USERS_PERCENTAGE = 1 - ( CRASHED_USERS / ALL_USERS ) x 100
যখন একটি ক্র্যাশ ঘটে, তখন Google Analytics একটি
app_exception
ইভেন্ট টাইপ পাঠায় এবং CRASHED_USERS সেই ইভেন্ট প্রকারের সাথে যুক্ত ব্যবহারকারীর সংখ্যা উপস্থাপন করে।Crashlytics ড্যাশবোর্ডের উপরের-ডানদিকে ড্রপ-ডাউন মেনু থেকে আপনি যে সময়কালে নির্বাচন করেছেন সেই সময়ের মধ্যে আপনার অ্যাপের সাথে জড়িত মোট ব্যবহারকারীদের ALL_USERS প্রতিনিধিত্ব করে।
ক্র্যাশ-মুক্ত ব্যবহারকারীর শতাংশ সময়ের সাথে একটি সমষ্টি , গড় নয়।
উদাহরণস্বরূপ, কল্পনা করুন আপনার অ্যাপের তিনজন ব্যবহারকারী আছে; আমরা তাদের ব্যবহারকারী A, User B, এবং User C বলব। নিচের সারণীটি দেখায় যে কোন ব্যবহারকারীরা প্রতিদিন আপনার অ্যাপের সাথে জড়িত ছিলেন এবং সেই দিন কোন ব্যবহারকারীর ক্র্যাশ হয়েছিল:
সোমবার | মঙ্গলবার | বুধবার | |
---|---|---|---|
আপনার অ্যাপের সাথে জড়িত ব্যবহারকারীরা | A, B, C | A, B, C | ক, বি |
একটি ক্র্যাশ হয়েছে যে ব্যবহারকারী | গ | খ | ক |
বুধবার, আপনার ক্র্যাশ-মুক্ত ব্যবহারকারীর শতাংশ হল 50% (2 জনের মধ্যে 1 জন ব্যবহারকারী ক্র্যাশ-মুক্ত ছিল)।
আপনার দুইজন ব্যবহারকারী বুধবার আপনার অ্যাপের সাথে জড়িত, কিন্তু তাদের মধ্যে শুধুমাত্র একজনের (ব্যবহারকারী B) কোনো ক্র্যাশ হয়নি।গত 2 দিনের জন্য, আপনার ক্র্যাশ-মুক্ত ব্যবহারকারীর শতাংশ হল 33.3% (3 জনের মধ্যে 1 জন ব্যবহারকারী ক্র্যাশ-মুক্ত ছিল)।
আপনার তিনজন ব্যবহারকারী গত দুই দিনে আপনার অ্যাপের সাথে জড়িত, কিন্তু তাদের মধ্যে শুধুমাত্র একজন (ব্যবহারকারী সি) কোনো ক্র্যাশ হয়নি।গত 3 দিনের জন্য, আপনার ক্র্যাশ-মুক্ত ব্যবহারকারীর শতাংশ হল 0% (3টির মধ্যে 0 জন ব্যবহারকারী ক্র্যাশ-মুক্ত ছিল)।
আপনার তিনজন ব্যবহারকারী গত তিন দিনে আপনার অ্যাপের সাথে জড়িত, কিন্তু তাদের মধ্যে শূন্যের কোনো ক্র্যাশ হয়নি।
ক্র্যাশ-মুক্ত ব্যবহারকারীর মান বিভিন্ন সময়ের সাথে তুলনা করা উচিত নয়। একটি একক ব্যবহারকারীর ক্র্যাশের সম্মুখীন হওয়ার সম্ভাবনা যতবার তারা আপনার অ্যাপ ব্যবহার করে ততবার বৃদ্ধি পায়, তাই ক্র্যাশ-মুক্ত ব্যবহারকারীদের মান দীর্ঘ সময়ের জন্য ছোট হতে পারে।
নোটগুলি প্রকল্পের সদস্যদের প্রশ্ন, স্ট্যাটাস আপডেট ইত্যাদির সাথে নির্দিষ্ট বিষয়ে মন্তব্য করার অনুমতি দেয়।
যখন কোনও প্রকল্প সদস্য একটি নোট পোস্ট করে, তখন এটি তাদের Google অ্যাকাউন্টের ইমেলের সাথে লেবেল করা হয়। এই ইমেল ঠিকানাটি নোটের সাথে, নোটটি দেখার অ্যাক্সেস সহ সমস্ত প্রকল্প সদস্যদের কাছে দৃশ্যমান।
নিম্নলিখিতগুলি নোটগুলি দেখতে, লিখতে এবং মুছতে প্রয়োজনীয় অ্যাক্সেস বর্ণনা করে:
নিম্নলিখিত যেকোনও ভূমিকা সহ প্রকল্প সদস্যরা বিদ্যমান নোটগুলি দেখতে এবং মুছে ফেলতে পারেন এবং একটি সমস্যায় নতুন নোট লিখতে পারেন।
- প্রকল্পের মালিক বা সম্পাদক , ফায়ারবেস অ্যাডমিন , কোয়ালিটি অ্যাডমিন বা ক্র্যাশলাইটিক্স অ্যাডমিন
নিম্নলিখিত ভূমিকাগুলির মধ্যে যেকোনও প্রকল্পের সদস্যরা একটি ইস্যুতে পোস্ট করা নোটগুলি দেখতে পারেন, কিন্তু তারা একটি নোট মুছতে বা লিখতে পারবেন না।
- প্রজেক্ট ভিউয়ার , ফায়ারবেস ভিউয়ার , কোয়ালিটি ভিউয়ার বা ক্র্যাশলাইটিক্স ভিউয়ার
ক্র্যাশ-মুক্ত মেট্রিক্স বুঝুন দেখুন।
নোটগুলি প্রকল্পের সদস্যদের প্রশ্ন, স্ট্যাটাস আপডেট ইত্যাদির সাথে নির্দিষ্ট বিষয়ে মন্তব্য করার অনুমতি দেয়।
যখন কোনও প্রকল্প সদস্য একটি নোট পোস্ট করে, তখন এটি তাদের Google অ্যাকাউন্টের ইমেলের সাথে লেবেল করা হয়। এই ইমেল ঠিকানাটি নোটের সাথে, নোটটি দেখার অ্যাক্সেস সহ সমস্ত প্রকল্প সদস্যদের কাছে দৃশ্যমান।
নিম্নলিখিতগুলি নোটগুলি দেখতে, লিখতে এবং মুছতে প্রয়োজনীয় অ্যাক্সেস বর্ণনা করে:
নিম্নলিখিত যেকোনও ভূমিকা সহ প্রকল্প সদস্যরা বিদ্যমান নোটগুলি দেখতে এবং মুছে ফেলতে পারেন এবং একটি সমস্যায় নতুন নোট লিখতে পারেন।
- প্রকল্পের মালিক বা সম্পাদক , ফায়ারবেস অ্যাডমিন , কোয়ালিটি অ্যাডমিন বা ক্র্যাশলাইটিক্স অ্যাডমিন
নিম্নলিখিত ভূমিকাগুলির মধ্যে যেকোনও প্রকল্পের সদস্যরা একটি ইস্যুতে পোস্ট করা নোটগুলি দেখতে পারেন, কিন্তু তারা একটি নোট মুছতে বা লিখতে পারবেন না।
- প্রজেক্ট ভিউয়ার , ফায়ারবেস ভিউয়ার , কোয়ালিটি ভিউয়ার বা ক্র্যাশলাইটিক্স ভিউয়ার
ইন্টিগ্রেশন
আপনার প্রোজেক্ট যদি Google Mobile Ads SDK-এর পাশাপাশি Crashlytics ব্যবহার করে, তাহলে ব্যতিক্রম হ্যান্ডলারদের নিবন্ধন করার সময় ক্র্যাশ রিপোর্টাররা হস্তক্ষেপ করছে। সমস্যা সমাধানের জন্য, disableSDKCrashReporting
কল করে Mobile Ads SDK-এ ক্র্যাশ রিপোর্টিং বন্ধ করুন।
আপনি BigQuery-এর সাথে Crashlytics লিঙ্ক করার পরে, আপনার তৈরি করা নতুন ডেটাসেটগুলি স্বয়ংক্রিয়ভাবে মার্কিন যুক্তরাষ্ট্রে অবস্থিত হবে, আপনার Firebase প্রকল্পের অবস্থান নির্বিশেষে।
প্রত্যাবর্তিত সমস্যা
আপনি পূর্বে সমস্যাটি বন্ধ করার সময় একটি সমস্যাটি রিগ্রেশন হয়েছে কিন্তু Crashlytics একটি নতুন প্রতিবেদন পায় যে সমস্যাটি আবার ঘটেছে। Crashlytics স্বয়ংক্রিয়ভাবে এই প্রত্যাবর্তিত সমস্যাগুলি পুনরায় খোলে যাতে আপনি সেগুলিকে আপনার অ্যাপের জন্য উপযুক্ত হিসাবে সমাধান করতে পারেন।
এখানে একটি উদাহরণের দৃশ্য যা ব্যাখ্যা করে যে কীভাবে Crashlytics একটি সমস্যাকে রিগ্রেশন হিসাবে শ্রেণীবদ্ধ করে:
- প্রথমবারের মতো, Crashlytics ক্র্যাশ "A" সম্পর্কে একটি ক্র্যাশ রিপোর্ট পায়৷ Crashlytics সেই ক্র্যাশের জন্য একটি সংশ্লিষ্ট সমস্যা খোলে (ইস্যু "A")।
- আপনি এই বাগটি দ্রুত ঠিক করুন, সমস্যা "A" বন্ধ করুন এবং তারপর আপনার অ্যাপের একটি নতুন সংস্করণ প্রকাশ করুন৷
- আপনি সমস্যাটি বন্ধ করার পরে Crashlytics ইস্যু "A" সম্পর্কে আরেকটি প্রতিবেদন পায়।
- প্রতিবেদনটি যদি এমন কোনো অ্যাপ সংস্করণ থেকে হয় যা Crashlytics জানত যে আপনি যখন সমস্যাটি বন্ধ করেছিলেন (অর্থাৎ সংস্করণটি কোনও ক্র্যাশের জন্য একটি ক্র্যাশ রিপোর্ট পাঠিয়েছিল), তাহলে Crashlytics সমস্যাটিকে প্রত্যাবর্তন হিসাবে বিবেচনা করবে না। বিষয়টি বন্ধ থাকবে।
- রিপোর্টটি যদি এমন একটি অ্যাপ সংস্করণ থেকে হয় যা Crashlytics জানত না যে আপনি কখন সমস্যাটি বন্ধ করেছিলেন (অর্থাৎ সংস্করণটি কোনও ক্র্যাশের জন্য কোনও ক্র্যাশ রিপোর্ট পাঠায়নি ), তাহলে Crashlytics বিবেচনা করে যে সমস্যাটি প্রত্যাবর্তিত হয়েছে এবং সমস্যাটি আবার খুলবে .
যখন একটি সমস্যা রিগ্রেস হয়, তখন আমরা একটি রিগ্রেশন শনাক্তকরণ সতর্কতা পাঠাই এবং সমস্যাটিতে একটি রিগ্রেশন সিগন্যাল যোগ করি যাতে আপনাকে জানানো হয় যে Crashlytics সমস্যাটি আবার খুলেছে। আপনি যদি আমাদের রিগ্রেশন অ্যালগরিদমের কারণে কোনো সমস্যা পুনরায় খুলতে না চান, তাহলে সমস্যাটিকে বন্ধ করার পরিবর্তে "নিঃশব্দ" করুন।
যদি কোনও রিপোর্ট কোনও পুরানো অ্যাপ সংস্করণ থেকে হয় যেটি আপনি সমস্যাটি বন্ধ করার সময় কোনও ক্র্যাশ রিপোর্ট পাঠাননি, তাহলে Crashlytics সমস্যাটিকে প্রত্যাবর্তন বলে বিবেচনা করে এবং সমস্যাটি আবার খুলবে।
এই পরিস্থিতি নিম্নলিখিত পরিস্থিতিতে ঘটতে পারে: আপনি একটি বাগ সংশোধন করেছেন এবং আপনার অ্যাপের একটি নতুন সংস্করণ প্রকাশ করেছেন, কিন্তু আপনার কাছে এখনও বাগ সংশোধন ছাড়াই পুরানো সংস্করণে ব্যবহারকারীরা আছে৷ যদি, ঘটনাক্রমে, আপনি সমস্যাটি বন্ধ করার সময় সেই পুরানো সংস্করণগুলির মধ্যে একটি কখনই কোনও ক্র্যাশ রিপোর্ট না পাঠায়, এবং সেই ব্যবহারকারীরা বাগটির সম্মুখীন হতে শুরু করে, তাহলে সেই ক্র্যাশ রিপোর্টগুলি একটি প্রত্যাবর্তিত সমস্যাকে ট্রিগার করবে৷
আপনি যদি আমাদের রিগ্রেশন অ্যালগরিদমের কারণে কোনো সমস্যা পুনরায় খুলতে না চান, তাহলে সমস্যাটিকে বন্ধ করার পরিবর্তে "নিঃশব্দ" করুন।
ধরা পড়া ব্যতিক্রমগুলিকে মারাত্মক হিসাবে রিপোর্ট করা
Crashlytics ধরা না পড়া ব্যতিক্রমগুলিকে মারাত্মক হিসাবে রিপোর্ট করতে পারে (Unity SDK-এর v10.4.0 দিয়ে শুরু)। নিম্নলিখিত প্রায়শই জিজ্ঞাসিত প্রশ্নগুলি এই বৈশিষ্ট্যটি ব্যবহার করার যুক্তি এবং সর্বোত্তম অনুশীলনগুলি ব্যাখ্যা করতে সহায়তা করে৷
ধরা না পড়া ব্যতিক্রমগুলিকে মারাত্মক হিসাবে রিপোর্ট করার মাধ্যমে, আপনি আরও বাস্তবসম্মত ইঙ্গিত পাবেন যে কোন ব্যতিক্রমগুলির ফলে গেমটি খেলার অযোগ্য হতে পারে – এমনকি যদি অ্যাপটি চলতে থাকে।
মনে রাখবেন যে আপনি যদি মারাত্মক রিপোর্ট করা শুরু করেন, তাহলে আপনার ক্র্যাশ-ফ্রি ব্যবহারকারীদের (CFU) শতাংশ কমে যাবে, কিন্তু CFU মেট্রিক আপনার অ্যাপের সাথে শেষ-ব্যবহারকারীদের অভিজ্ঞতার আরও প্রতিনিধিত্ব করবে।
Crashlytics জন্য একটি অজানা ব্যতিক্রমকে মারাত্মক হিসাবে রিপোর্ট করার জন্য, নিম্নলিখিত দুটি শর্ত অবশ্যই পূরণ করতে হবে:
আপনার অ্যাপে আরম্ভ করার সময়,
ReportUncaughtExceptionsAsFatal
প্রপার্টিটি অবশ্যইtrue
সেট করতে হবে ।আপনার অ্যাপ (বা একটি অন্তর্ভুক্ত লাইব্রেরি) এমন একটি ব্যতিক্রম ছুঁড়েছে যা ধরা পড়েনি। একটি ব্যতিক্রম যা তৈরি করা হয়েছে, কিন্তু নিক্ষিপ্ত নয় , ধরা পড়ে না।
যখন আপনি মারাত্মক হিসাবে আপনার ধরা না পড়া ব্যতিক্রমগুলির রিপোর্ট পেতে শুরু করেন, তখন এই ধরা না পড়া ব্যতিক্রমগুলি পরিচালনা করার জন্য এখানে কিছু বিকল্প রয়েছে:
- আপনি কিভাবে এই ধরা পড়া ব্যতিক্রমগুলি ধরা এবং পরিচালনা শুরু করতে পারেন তা বিবেচনা করুন।
- ইউনিটি ডিবাগ কনসোল এবং Crashlytics এ ব্যতিক্রম লগিং করার জন্য বিভিন্ন বিকল্প বিবেচনা করুন।
ছোঁড়া ব্যতিক্রমগুলি ধরুন এবং পরিচালনা করুন
ব্যতিক্রমগুলি অপ্রত্যাশিত বা ব্যতিক্রমী অবস্থা প্রতিফলিত করার জন্য তৈরি এবং নিক্ষেপ করা হয়। একটি নিক্ষিপ্ত ব্যতিক্রম দ্বারা প্রতিফলিত সমস্যাগুলি সমাধান করার জন্য প্রোগ্রামটিকে একটি পরিচিত অবস্থায় ফিরিয়ে দেওয়া অন্তর্ভুক্ত (একটি প্রক্রিয়া যা ব্যতিক্রম হ্যান্ডলিং হিসাবে পরিচিত)।
সমস্ত পূর্বে দেখা ব্যতিক্রমগুলি ধরা এবং পরিচালনা করা সর্বোত্তম অনুশীলন যদি না প্রোগ্রামটিকে একটি পরিচিত অবস্থায় ফিরিয়ে দেওয়া যায় না।
কোন ধরণের ব্যতিক্রমগুলি ধরা হয় এবং কোন কোড দ্বারা পরিচালিত হয় তা নিয়ন্ত্রণ করতে, try-catch
ব্লকে একটি ব্যতিক্রম তৈরি করতে পারে এমন র্যাপ কোড । নিশ্চিত করুন যে catch
স্টেটমেন্টের শর্তগুলি যথাযথভাবে নির্দিষ্ট ব্যতিক্রমগুলি পরিচালনা করার জন্য যতটা সম্ভব সংকীর্ণ।
Unity বা Crashlytics এ ব্যতিক্রম লগ করুন
সমস্যাটি ডিবাগ করতে সহায়তা করার জন্য ইউনিটি বা Crashlytics ব্যতিক্রমগুলি রেকর্ড করার একাধিক উপায় রয়েছে।
Crashlytics ব্যবহার করার সময়, এখানে দুটি সবচেয়ে সাধারণ এবং প্রস্তাবিত বিকল্প রয়েছে:
বিকল্প 1: ইউনিটি কনসোলে প্রিন্ট করুন, কিন্তু বিকাশ বা সমস্যা সমাধানের সময় Crashlytics রিপোর্ট করবেন না
-
Debug.Log(exception)
,Debug.LogWarning(exception)
, এবংDebug.LogError(exception)
ব্যবহার করে ইউনিটি কনসোলে প্রিন্ট করুন যা ইউনিটি কনসোলে ব্যতিক্রমের বিষয়বস্তু মুদ্রণ করে এবং ব্যতিক্রমটিকে পুনরায় নিক্ষেপ করে না।
-
বিকল্প 2: নিম্নলিখিত পরিস্থিতিতে Crashlytics ড্যাশবোর্ডে একত্রিত প্রতিবেদনের জন্য Crashlytics এ আপলোড করুন:
- একটি সম্ভাব্য পরবর্তী Crashlytics ইভেন্ট ডিবাগ করার জন্য যদি একটি ব্যতিক্রম লগিং করার উপযুক্ত হয়, তাহলে
Crashlytics.Log(exception.ToString())
ব্যবহার করুন। - ধরা এবং পরিচালনা করা সত্ত্বেও যদি একটি ব্যতিক্রম Crashlytics এ রিপোর্ট করা হয়, তাহলে এটিকে একটি অপ্রত্যাশিত ঘটনা হিসাবে লগ করতে
Crashlytics.LogException(exception)
ব্যবহার করুন।
- একটি সম্ভাব্য পরবর্তী Crashlytics ইভেন্ট ডিবাগ করার জন্য যদি একটি ব্যতিক্রম লগিং করার উপযুক্ত হয়, তাহলে
যাইহোক, যদি আপনি ইউনিটি ক্লাউড ডায়াগনস্টিকসে একটি মারাত্মক ইভেন্ট ম্যানুয়ালি রিপোর্ট করতে চান, আপনি Debug.LogException
ব্যবহার করতে পারেন। এই বিকল্পটি অপশন 1 এর মত ইউনিটি কনসোলে ব্যতিক্রমটি প্রিন্ট করে, তবে এটি ব্যতিক্রমটিও ছুঁড়ে দেয় (এটি এখনও নিক্ষেপ করা বা ধরা হয়েছে কিনা)। এটি স্থানীয়ভাবে ত্রুটি ছুড়ে দেয়। এর মানে হল যে এমনকি একটি আশেপাশের Debug.LogException(exception)
try-catch
ব্লকের সাথে এখনও একটি ধরা পড়া ব্যতিক্রম নয়।
অতএব, যদি এবং শুধুমাত্র যদি আপনি নিম্নলিখিত সব করতে চান তাহলে Debug.LogException
কল করুন:
- ইউনিটি কনসোলে ব্যতিক্রম প্রিন্ট করতে।
- একটি মারাত্মক ঘটনা হিসাবে Crashlytics এ ব্যতিক্রম আপলোড করতে।
- ব্যতিক্রমটি ছুঁড়ে ফেলার জন্য, এটিকে একটি অঘোষিত ব্যতিক্রম হিসাবে বিবেচনা করতে হবে এবং এটি ইউনিটি ক্লাউড ডায়াগনস্টিকসে রিপোর্ট করতে হবে।
মনে রাখবেন যে আপনি যদি ইউনিটি কনসোলে একটি ধরা ব্যতিক্রম প্রিন্ট করতে চান এবং একটি অপ্রত্যাশিত ইভেন্ট হিসাবে Crashlytics এ আপলোড করতে চান তবে পরিবর্তে নিম্নলিখিতগুলি করুন:
try
{
methodThatThrowsMyCustomExceptionType();
}
catch(MyCustomExceptionType exception)
{
// Print the exception to the Unity console at the error level.
Debug.LogError(exception);
// Upload the exception to Crashlytics as a non-fatal event.
Crashlytics.LogException(exception); // not Debug.LogException
//
// Code that handles the exception
//
}