এই পৃষ্ঠাটি সমস্যা সমাধানের সহায়তা এবং Crashlytics ব্যবহার সম্পর্কে প্রায়শই জিজ্ঞাসিত প্রশ্নের উত্তর প্রদান করে। আপনি যা খুঁজছেন তা যদি খুঁজে না পান বা অতিরিক্ত সাহায্যের প্রয়োজন হয়, তাহলে Firebase সহায়তার সাথে যোগাযোগ করুন।
সাধারণ সমস্যা সমাধান/প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী
Firebase কনসোলে আপনার Issue টেবিলে তালিকাভুক্ত সমস্যাগুলির জন্য আপনি দুটি ভিন্ন ফর্ম্যাট লক্ষ্য করতে পারেন। এবং আপনার কিছু সমস্যার মধ্যে "ভেরিয়েন্ট" নামক একটি বৈশিষ্ট্যও লক্ষ্য করতে পারেন। এখানে কেন!
২০২৩ সালের গোড়ার দিকে, আমরা ইভেন্টগুলিকে গ্রুপ করার জন্য একটি উন্নত বিশ্লেষণ ইঞ্জিন, সেইসাথে একটি আপডেটেড ডিজাইন এবং নতুন ইস্যুগুলির জন্য কিছু উন্নত বৈশিষ্ট্য (যেমন ভেরিয়েন্ট!) চালু করেছি। সমস্ত বিবরণের জন্য আমাদের সাম্প্রতিক ব্লগ পোস্টটি দেখুন, তবে হাইলাইটগুলির জন্য আপনি নীচে পড়তে পারেন।
Crashlytics আপনার অ্যাপের সমস্ত ইভেন্ট (যেমন ক্র্যাশ, নন-ফ্যাটাল এবং ANR) বিশ্লেষণ করে এবং ইস্যু নামক ইভেন্টের গ্রুপ তৈরি করে — একটি ইস্যুর সমস্ত ইভেন্টের ব্যর্থতার একটি সাধারণ বিন্দু থাকে।
এই সমস্যাগুলির মধ্যে ইভেন্টগুলিকে গোষ্ঠীভুক্ত করার জন্য, উন্নত বিশ্লেষণ ইঞ্জিন এখন ইভেন্টের অনেক দিক বিবেচনা করে, যার মধ্যে রয়েছে স্ট্যাক ট্রেসের ফ্রেম, ব্যতিক্রম বার্তা, ত্রুটি কোড এবং অন্যান্য প্ল্যাটফর্ম বা ত্রুটি ধরণের বৈশিষ্ট্য।
তবে, এই ইভেন্ট গ্রুপের মধ্যে, ব্যর্থতার দিকে পরিচালিত স্ট্যাক ট্রেসগুলি ভিন্ন হতে পারে। একটি ভিন্ন স্ট্যাক ট্রেস একটি ভিন্ন মূল কারণকে বোঝাতে পারে। একটি সমস্যার মধ্যে এই সম্ভাব্য পার্থক্যটি উপস্থাপন করার জন্য, আমরা এখন সমস্যার মধ্যে ভেরিয়েন্ট তৈরি করি - প্রতিটি ভেরিয়েন্ট হল একটি সমস্যার ইভেন্টগুলির একটি উপ-গ্রুপ যার একই ব্যর্থতা বিন্দু এবং একই রকম স্ট্যাক ট্রেস রয়েছে। ভেরিয়েন্টগুলির সাহায্যে, আপনি একটি সমস্যার মধ্যে সবচেয়ে সাধারণ স্ট্যাক ট্রেসগুলি ডিবাগ করতে পারেন এবং নির্ধারণ করতে পারেন যে বিভিন্ন মূল কারণ ব্যর্থতার দিকে পরিচালিত করছে কিনা।
এই উন্নতিগুলির সাথে আপনি যা অভিজ্ঞতা পাবেন তা এখানে:
সমস্যা সারির মধ্যে পুনর্নির্মিত মেটাডেটা দেখানো হয়েছে
আপনার অ্যাপে সমস্যাগুলি বোঝা এবং বিচার করা এখন আরও সহজ।কম ডুপ্লিকেট সমস্যা
লাইন নম্বর পরিবর্তনের ফলে নতুন কোনও সমস্যা হয় না।বিভিন্ন মূল কারণ সহ জটিল সমস্যাগুলির সহজে ডিবাগিং
কোনও সমস্যার মধ্যে সবচেয়ে সাধারণ স্ট্যাক ট্রেস ডিবাগ করতে ভেরিয়েন্ট ব্যবহার করুন।আরও অর্থপূর্ণ সতর্কতা এবং সংকেত
একটি নতুন সমস্যা আসলে একটি নতুন বাগের প্রতিনিধিত্ব করে।আরও শক্তিশালী অনুসন্ধান
প্রতিটি ইস্যুতে আরও অনুসন্ধানযোগ্য মেটাডেটা থাকে, যেমন ব্যতিক্রমের ধরণ এবং প্যাকেজের নাম।
এই উন্নতিগুলি কীভাবে কার্যকর হচ্ছে তা এখানে দেওয়া হল:
যখন আমরা আপনার অ্যাপ থেকে নতুন ইভেন্ট পাব, তখন আমরা পরীক্ষা করব যে সেগুলি বিদ্যমান কোনও সমস্যার সাথে মেলে কিনা।
যদি কোনও মিল না থাকে, তাহলে আমরা স্বয়ংক্রিয়ভাবে ইভেন্টে আমাদের আরও স্মার্ট ইভেন্ট-গ্রুপিং অ্যালগরিদম প্রয়োগ করব এবং পুনর্নির্মিত মেটাডেটা ডিজাইনের সাথে একটি নতুন সমস্যা তৈরি করব।
আমাদের ইভেন্ট গ্রুপিং-এ এটিই প্রথম বড় আপডেট। যদি আপনার কোন প্রতিক্রিয়া থাকে বা কোন সমস্যার সম্মুখীন হন, তাহলে অনুগ্রহ করে একটি প্রতিবেদন দাখিল করে আমাদের জানান।
যদি আপনি ব্রেডক্রাম্ব লগ দেখতে না পান, তাহলে আমরা আপনাকে Google Analytics এর জন্য আপনার অ্যাপের কনফিগারেশন পরীক্ষা করার পরামর্শ দিচ্ছি। নিশ্চিত করুন যে আপনি নিম্নলিখিত প্রয়োজনীয়তাগুলি পূরণ করছেন:
আপনি আপনার Firebase প্রকল্পে Google Analytics সক্ষম করেছেন ।
আপনি Google Analytics এর জন্য ডেটা শেয়ারিং সক্ষম করেছেন। আপনার Analytics ডেটা শেয়ারিং সেটিংস পরিচালনা করুন বিভাগে এই সেটিং সম্পর্কে আরও জানুন।
তুমি করেছোGoogle Analytics জন্য ফায়ারবেস SDK যোগ করা হয়েছেআপনার অ্যাপে। এই SDKটি Crashlytics SDK এর সাথে যোগ করতে হবে।
তুমি ব্যবহার করছোসর্বশেষ Firebase SDK সংস্করণআপনার অ্যাপে ব্যবহৃত সমস্ত পণ্যের জন্য।
বিশেষ করে নিশ্চিত করুন যে আপনি Google Analytics এর জন্য Firebase SDK-এর কমপক্ষে নিম্নলিখিত সংস্করণটি ব্যবহার করছেন:
Android — v17.2.3+ ( BoM v24.7.1+)।
যদি আপনি বেগের সতর্কতা দেখতে না পান, তাহলে নিশ্চিত করুন যে আপনি ব্যবহার করছেনক্র্যাশলিটিক্স SDK v18.6.0+ (অথবা Firebase BoM v32.6.0+)।
যদি আপনি ক্র্যাশ-মুক্ত মেট্রিক্স (যেমন ক্র্যাশ-মুক্ত ব্যবহারকারী এবং সেশন) দেখতে না পান অথবা অবিশ্বস্ত মেট্রিক্স দেখতে না পান, তাহলে নিম্নলিখিতগুলি পরীক্ষা করুন:
নিশ্চিত করুন যে আপনি ব্যবহার করছেনক্র্যাশলিটিক্স SDK v18.6.0+ (অথবা Firebase BoM v32.6.0+)।
নিশ্চিত করুন যে আপনার ডেটা সংগ্রহের সেটিংস আপনার ক্র্যাশ-মুক্ত মেট্রিক্সের গুণমানের উপর প্রভাব ফেলছে না:
যদি আপনি স্বয়ংক্রিয় ক্র্যাশ রিপোর্টিং অক্ষম করে অপ্ট-ইন রিপোর্টিং সক্ষম করেন , তাহলে ক্র্যাশ তথ্য কেবলমাত্র সেই ব্যবহারকারীদের কাছ থেকে Crashlytics এ পাঠানো যাবে যারা স্পষ্টভাবে ডেটা সংগ্রহে অংশগ্রহণ করেছেন। সুতরাং, ক্র্যাশ-মুক্ত মেট্রিক্সের নির্ভুলতা প্রভাবিত হবে কারণ Crashlytics শুধুমাত্র এই অপ্ট-ইন করা ব্যবহারকারীদের কাছ থেকে ক্র্যাশ তথ্য থাকে (আপনার সমস্ত ব্যবহারকারীর পরিবর্তে)। এর অর্থ হল আপনার ক্র্যাশ-মুক্ত মেট্রিক্স কম নির্ভরযোগ্য এবং আপনার অ্যাপের সামগ্রিক স্থিতিশীলতার প্রতিফলন কম হতে পারে।
যদি আপনার স্বয়ংক্রিয় ডেটা সংগ্রহ অক্ষম থাকে, তাহলে আপনি Crashlytics এ ডিভাইসে ক্যাশ করা রিপোর্ট পাঠাতে
sendUnsentReportsব্যবহার করতে পারেন। এই পদ্ধতি ব্যবহার করলে Crashlytics এ ক্র্যাশ ডেটা পাঠানো হবে, কিন্তু সেশন ডেটা পাঠানো হবে না যার ফলে কনসোল চার্টগুলি ক্র্যাশ-মুক্ত মেট্রিক্সের জন্য কম বা শূন্য মান দেখাবে।
ক্র্যাশ-মুক্ত মেট্রিক্স বুঝুন দেখুন।
Crashlytics Android 11 এবং তার পরবর্তী ভার্সন চালিত ডিভাইস থেকে Android অ্যাপের জন্য ANR রিপোর্টিং সমর্থন করে। ANR সংগ্রহের জন্য আমরা যে অন্তর্নিহিত API ( getHistoricalProcessExitReasons ) ব্যবহার করি তা SIGQUIT বা ওয়াচডগ-ভিত্তিক পদ্ধতির চেয়ে বেশি নির্ভরযোগ্য। এই API শুধুমাত্র Android 11+ ডিভাইসে উপলব্ধ।
যদি আপনার কিছু ANR-তে BuildId গুলি অনুপস্থিত থাকে, তাহলে নিম্নরূপ সমস্যা সমাধান করুন:
নিশ্চিত করুন যে আপনি একটি আপ-টু-ডেট Crashlytics Android SDK এবং Crashlytics Gradle প্লাগইন সংস্করণ ব্যবহার করছেন।
যদি আপনার Android 11 এবং কিছু Android 12 ANR-এর জন্য
BuildIdগুলি অনুপস্থিত থাকে, তাহলে সম্ভবত আপনি একটি পুরানো SDK, Gradle প্লাগইন, অথবা উভয়ই ব্যবহার করছেন। এই ANR-এর জন্যBuildIdগুলি সঠিকভাবে সংগ্রহ করতে, আপনাকে নিম্নলিখিত সংস্করণগুলি ব্যবহার করতে হবে:- Crashlytics অ্যান্ড্রয়েড এসডিকে v18.3.5+ ( Firebase BoM v31.2.2+)
- Crashlytics গ্রেডল প্লাগইন v2.9.4+
আপনার শেয়ার্ড লাইব্রেরির জন্য আপনি কোনও অ-মানক অবস্থান ব্যবহার করছেন কিনা তা পরীক্ষা করুন।
যদি আপনার অ্যাপের শেয়ার্ড লাইব্রেরির জন্য শুধুমাত্র
BuildIdগুলি অনুপস্থিত থাকে, তাহলে সম্ভবত আপনি শেয়ার্ড লাইব্রেরির জন্য স্ট্যান্ডার্ড, ডিফল্ট অবস্থান ব্যবহার করছেন না। যদি এটি হয়, তাহলে Crashlytics সংশ্লিষ্টBuildIdগুলি সনাক্ত করতে সক্ষম নাও হতে পারে। আমরা আপনাকে শেয়ার্ড লাইব্রেরির জন্য স্ট্যান্ডার্ড অবস্থান ব্যবহার করার কথা বিবেচনা করার পরামর্শ দিচ্ছি।নিশ্চিত করুন যে আপনি বিল্ড প্রক্রিয়ার সময়
BuildIdগুলি স্ট্রিপ করছেন না।মনে রাখবেন যে নিম্নলিখিত সমস্যা সমাধানের টিপসগুলি ANR এবং নেটিভ ক্র্যাশ উভয়ের ক্ষেত্রেই প্রযোজ্য।
আপনার বাইনারিগুলিতে
readelf -nচালিয়েBuildIdগুলি বিদ্যমান কিনা তা পরীক্ষা করুন। যদিBuildIdগুলি অনুপস্থিত থাকে, তাহলে আপনার বিল্ড সিস্টেমের ফ্ল্যাগে-Wl,--build-idযোগ করুন।আপনার APK এর আকার কমানোর জন্য
BuildIdগুলি অনিচ্ছাকৃতভাবে বাদ দিচ্ছেন না কিনা তা পরীক্ষা করুন।যদি আপনি কোনও লাইব্রেরির স্ট্রিপড এবং আনস্ট্রিপড সংস্করণ রাখেন, তাহলে আপনার কোডের সঠিক সংস্করণটি নির্দেশ করতে ভুলবেন না।
গুগল প্লে এবং Crashlytics মধ্যে ANR গণনার মধ্যে অমিল থাকতে পারে। ANR ডেটা সংগ্রহ এবং রিপোর্ট করার পদ্ধতির পার্থক্যের কারণে এটি প্রত্যাশিত। অ্যাপটি পরবর্তী শুরু হলে Crashlytics ANR রিপোর্ট করে, যেখানে Android Vitals ANR হওয়ার পরে ANR ডেটা পাঠায়।
উপরন্তু, Crashlytics শুধুমাত্র অ্যান্ড্রয়েড ১১+ চালিত ডিভাইসগুলিতে ঘটে যাওয়া ANR প্রদর্শন করে, যেখানে Google Play পরিষেবা এবং ডেটা সংগ্রহের সম্মতি গ্রহণকারী ডিভাইসগুলি থেকে ANR প্রদর্শন করে।
LLVM এবং GNU টুলচেইনগুলিতে আপনার অ্যাপের বাইনারিগুলির পঠনযোগ্য অংশের জন্য আলাদা ডিফল্ট এবং চিকিত্সা রয়েছে, যা Firebase কনসোলে অসঙ্গত স্ট্যাক ট্রেস তৈরি করতে পারে। এটি কমাতে, আপনার বিল্ড প্রক্রিয়ায় নিম্নলিখিত লিঙ্কার ফ্ল্যাগগুলি যুক্ত করুন:
যদি আপনি LLVM টুলচেইন থেকে
lldলিঙ্কার ব্যবহার করেন, তাহলে যোগ করুন:-Wl,--no-rosegmentযদি আপনি GNU টুলচেইন থেকে
ld.goldলিঙ্কার ব্যবহার করেন, তাহলে যোগ করুন:-Wl,--rosegment
যদি আপনি এখনও স্ট্যাক ট্রেস অসঙ্গতি দেখতে পান (অথবা যদি কোনও পতাকাই আপনার টুলচেইনের সাথে প্রাসঙ্গিক না হয়), তাহলে পরিবর্তে আপনার বিল্ড প্রক্রিয়ায় নিম্নলিখিতগুলি যোগ করার চেষ্টা করুন:
-fno-omit-frame-pointer Crashlytics প্লাগইনটি একটি কাস্টমাইজড ব্রেকপ্যাড প্রতীক ফাইল জেনারেটরকে একত্রিত করে। যদি আপনি ব্রেকপ্যাড প্রতীক ফাইল তৈরির জন্য আপনার নিজস্ব বাইনারি ব্যবহার করতে চান (উদাহরণস্বরূপ, যদি আপনি আপনার বিল্ড চেইন থেকে উৎস থেকে সমস্ত নেটিভ এক্সিকিউটেবল তৈরি করতে চান), তাহলে এক্সিকিউটেবলের পথ নির্দিষ্ট করতে ঐচ্ছিক symbolGeneratorBinary এক্সটেনশন প্রপার্টি ব্যবহার করুন।
আপনি দুটি উপায়ের একটিতে ব্রেকপ্যাড প্রতীক ফাইল জেনারেটর বাইনারির পথ নির্দিষ্ট করতে পারেন:
বিকল্প ১ : আপনার
build.gradleফাইলেfirebaseCrashlyticsএক্সটেনশনের মাধ্যমে পথ নির্দিষ্ট করুন।আপনার অ্যাপ-লেভেল
build.gradle.ktsফাইলে নিম্নলিখিতটি যোগ করুন:গ্রেডল প্লাগইন v3.0.0+
android { buildTypes { release { configure<CrashlyticsExtension> { nativeSymbolUploadEnabled = true // Add these optional fields to specify the path to the executable symbolGeneratorType = "breakpad" breakpadBinary = file("/PATH/TO/BREAKPAD/DUMP_SYMS") } } } }
প্লাগইনের নিম্ন সংস্করণ
android { // ... buildTypes { // ... release { // ... firebaseCrashlytics { // existing; required for either symbol file generator nativeSymbolUploadEnabled true // Add this optional new block to specify the path to the executable symbolGenerator { breakpad { binary file("/PATH/TO/BREAKPAD/DUMP_SYMS") } } } } }
বিকল্প ২ : আপনার গ্র্যাডেল প্রোপার্টি ফাইলে একটি প্রোপার্টি লাইনের মাধ্যমে পথ নির্দিষ্ট করুন।
এক্সিকিউটেবলের পাথ নির্দিষ্ট করতে আপনি
com.google.firebase.crashlytics.breakpadBinaryপ্রপার্টি ব্যবহার করতে পারেন।আপনি আপনার Gradle প্রোপার্টি ফাইলটি ম্যানুয়ালি আপডেট করতে পারেন অথবা কমান্ড লাইনের মাধ্যমে ফাইলটি আপডেট করতে পারেন। উদাহরণস্বরূপ, কমান্ড লাইনের মাধ্যমে পাথ নির্দিষ্ট করতে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
./gradlew -Pcom.google.firebase.crashlytics.symbolGenerator=breakpad \ -Pcom.google.firebase.crashlytics.breakpadBinary=/PATH/TO/BREAKPAD/DUMP_SYMS \ app:assembleRelease app:uploadCrashlyticsSymbolFileRelease
যদি আপনি নিম্নলিখিত ব্যতিক্রমটি দেখতে পান, তাহলে সম্ভবত আপনি DexGuard এর এমন একটি সংস্করণ ব্যবহার করছেন যা Firebase Crashlytics SDK এর সাথে বেমানান:
java.lang.IllegalArgumentException: Transport backend 'cct' is not registered
এই ব্যতিক্রমটি আপনার অ্যাপটিকে ক্র্যাশ করে না বরং ক্র্যাশ রিপোর্ট পাঠানো থেকে বিরত রাখে। এটি ঠিক করার জন্য:
নিশ্চিত করুন যে আপনি সর্বশেষ DexGuard 8.x রিলিজ ব্যবহার করছেন। সর্বশেষ সংস্করণে Firebase Crashlytics SDK-এর জন্য প্রয়োজনীয় নিয়ম রয়েছে।
যদি আপনি আপনার DexGuard সংস্করণ পরিবর্তন করতে না চান, তাহলে আপনার অস্পষ্ট নিয়মে (আপনার DexGuard কনফিগারেশন ফাইলে) নিম্নলিখিত লাইনটি যোগ করার চেষ্টা করুন:
-keepresourcexmlelements manifest/application/service/meta-data@value=cct
যখন কোনও অ্যাপ এমন একটি অবফাসকেটর ব্যবহার করে যা ফাইল এক্সটেনশনটি প্রকাশ করে না, তখন Crashlytics ডিফল্টরূপে .java ফাইল এক্সটেনশন সহ প্রতিটি সমস্যা তৈরি করে।
যাতে Crashlytics সঠিক ফাইল এক্সটেনশনের সাথে সমস্যা তৈরি করতে পারে, নিশ্চিত করুন যে আপনার অ্যাপটি নিম্নলিখিত সেটআপ ব্যবহার করে:
- অ্যান্ড্রয়েড গ্রেডল ৪.২.০ বা তার বেশি ব্যবহার করে
- অস্পষ্টতা চালু থাকা অবস্থায় R8 ব্যবহার করে। আপনার অ্যাপটি R8 তে আপডেট করতে, এই ডকুমেন্টেশনটি অনুসরণ করুন।
মনে রাখবেন যে উপরে বর্ণিত সেটআপে আপডেট করার পরে, আপনি নতুন .kt সমস্যাগুলি দেখতে শুরু করতে পারেন যা বিদ্যমান .java সমস্যাগুলির সদৃশ। সেই পরিস্থিতি সম্পর্কে আরও জানতে FAQ দেখুন।
২০২১ সালের ডিসেম্বরের মাঝামাঝি থেকে, Crashlytics কোটলিন ব্যবহারকারী অ্যাপ্লিকেশনগুলির জন্য সমর্থন উন্নত করেছে।
সম্প্রতি পর্যন্ত, উপলব্ধ অবফাসকেটরগুলি ফাইল এক্সটেনশনটি প্রকাশ করত না, তাই Crashlytics প্রতিটি সমস্যা ডিফল্টরূপে .java ফাইল এক্সটেনশন দিয়ে তৈরি করত। তবে, অ্যান্ড্রয়েড গ্রেডল 4.2.0 হিসাবে, R8 ফাইল এক্সটেনশন সমর্থন করে।
এই আপডেটের মাধ্যমে, Crashlytics এখন নির্ধারণ করতে পারবে যে অ্যাপের মধ্যে ব্যবহৃত প্রতিটি ক্লাস Kotlin-এ লেখা আছে কিনা এবং ইস্যু স্বাক্ষরে সঠিক ফাইলের নাম অন্তর্ভুক্ত করতে পারবে। আপনার অ্যাপে নিম্নলিখিত সেটআপ থাকলে ক্র্যাশগুলি এখন সঠিকভাবে .kt ফাইলগুলিতে (যথাযথভাবে) দায়ী করা হবে:
- আপনার অ্যাপটি Android Gradle 4.2.0 বা তার উচ্চতর সংস্করণ ব্যবহার করে।
- আপনার অ্যাপটি অস্পষ্টতা চালু রেখে R8 ব্যবহার করে।
যেহেতু নতুন ক্র্যাশগুলিতে এখন তাদের ইস্যু স্বাক্ষরে সঠিক ফাইল এক্সটেনশন অন্তর্ভুক্ত থাকে, তাই আপনি নতুন .kt সমস্যাগুলি দেখতে পাবেন যা আসলে বিদ্যমান .java লেবেলযুক্ত সমস্যার সদৃশ। Firebase কনসোলে, আমরা একটি নতুন .kt সমস্যাটি বিদ্যমান .java লেবেলযুক্ত সমস্যার সম্ভাব্য সদৃশ কিনা তা সনাক্ত করার এবং আপনাকে যোগাযোগ করার চেষ্টা করি।
নোট প্রকল্পের সদস্যদের প্রশ্ন, স্ট্যাটাস আপডেট ইত্যাদির মাধ্যমে নির্দিষ্ট বিষয়ে মন্তব্য করার সুযোগ দেয়।
যখন কোনও প্রকল্প সদস্য একটি নোট পোস্ট করেন, তখন এটি তাদের Google অ্যাকাউন্টের ইমেল ঠিকানা দিয়ে লেবেল করা হয়। এই ইমেল ঠিকানাটি, নোটের সাথে, সমস্ত প্রকল্প সদস্যদের কাছে দৃশ্যমান হবে যাদের নোটটি দেখার অ্যাক্সেস রয়েছে।
নোট দেখতে, লিখতে এবং মুছে ফেলার জন্য প্রয়োজনীয় অ্যাক্সেসের বর্ণনা নিচে দেওয়া হল:
নিম্নলিখিত যেকোনো ভূমিকা সম্পন্ন প্রকল্পের সদস্যরা বিদ্যমান নোটগুলি দেখতে এবং মুছে ফেলতে এবং কোনও বিষয়ে নতুন নোট লিখতে পারবেন।
- প্রকল্পের মালিক বা সম্পাদক , ফায়ারবেস অ্যাডমিন , কোয়ালিটি অ্যাডমিন , অথবা ক্র্যাশলিটিক্স অ্যাডমিন
নিম্নলিখিত যেকোনো ভূমিকায় থাকা প্রকল্পের সদস্যরা কোনও বিষয়ে পোস্ট করা নোট দেখতে পারবেন, কিন্তু তারা কোনও নোট মুছতে বা লিখতে পারবেন না।
- প্রজেক্ট ভিউয়ার , ফায়ারবেস ভিউয়ার , কোয়ালিটি ভিউয়ার , অথবা ক্র্যাশলিটিক্স ভিউয়ার
ইন্টিগ্রেশন
যদি আপনার প্রোজেক্টে Google Mobile Ads SDK-এর পাশাপাশি Crashlytics ব্যবহার করা হয়, তাহলে সম্ভবত ক্র্যাশ রিপোর্টাররা ব্যতিক্রম হ্যান্ডলার নিবন্ধনের সময় হস্তক্ষেপ করছে। সমস্যাটি সমাধানের জন্য, disableSDKCrashReporting কল করে Mobile Ads SDK-তে ক্র্যাশ রিপোর্টিং বন্ধ করুন।
Crashlytics BigQuery এর সাথে লিঙ্ক করার পর, আপনার তৈরি করা নতুন ডেটাসেটগুলি স্বয়ংক্রিয়ভাবে মার্কিন যুক্তরাষ্ট্রে অবস্থিত হবে, আপনার Firebase প্রকল্পের অবস্থান নির্বিশেষে।
প্ল্যাটফর্ম সাপোর্ট
Firebase Crashlytics NDK ARMv5 (armeabi) সমর্থন করে না। NDK r17 থেকে এই ABI-এর সমর্থন সরিয়ে ফেলা হয়েছে।
পিছিয়ে পড়া সমস্যা
আপনি যখন আগে সমস্যাটি বন্ধ করে দিয়েছিলেন তখন একটি সমস্যা রিগ্রেশন হয়েছিল কিন্তু Crashlytics একটি নতুন রিপোর্ট পেয়েছে যে সমস্যাটি আবার ঘটেছে। Crashlytics স্বয়ংক্রিয়ভাবে এই রিগ্রেশন করা সমস্যাগুলি পুনরায় খুলবে যাতে আপনি আপনার অ্যাপের জন্য উপযুক্ত হিসাবে সেগুলি সমাধান করতে পারেন।
এখানে একটি উদাহরণ দেওয়া হল যা ব্যাখ্যা করে যে কীভাবে Crashlytics একটি সমস্যাকে রিগ্রেশন হিসেবে শ্রেণীবদ্ধ করে:
- প্রথমবারের মতো, Crashlytics Crash "A" সম্পর্কে একটি ক্র্যাশ রিপোর্ট পেয়েছে। Crashlytics সেই ক্র্যাশের জন্য একটি সংশ্লিষ্ট সমস্যা (ইস্যু "A") খোলে।
- আপনি দ্রুত এই বাগটি ঠিক করুন, "A" সমস্যাটি বন্ধ করুন, এবং তারপর আপনার অ্যাপের একটি নতুন সংস্করণ প্রকাশ করুন।
- আপনি সমস্যাটি বন্ধ করার পরে, Crashlytics "A" ইস্যু সম্পর্কে আরেকটি প্রতিবেদন পায়।
- যদি রিপোর্টটি এমন কোনও অ্যাপ ভার্সন থেকে আসে যা Crashlytics আপনার সমস্যাটি বন্ধ করার সময় জানত (অর্থাৎ সংস্করণটি কোনও ক্র্যাশের জন্য একটি ক্র্যাশ রিপোর্ট পাঠিয়েছিল), তাহলে Crashlytics সমস্যাটিকে রিগ্রেসড বলে বিবেচনা করবে না। সমস্যাটি বন্ধ থাকবে।
- যদি রিপোর্টটি এমন কোনও অ্যাপ ভার্সন থেকে আসে যা Crashlytics আপনার সমস্যাটি বন্ধ করার সময় জানত না (অর্থাৎ সংস্করণটি কোনও ক্র্যাশের জন্য কোনও ক্র্যাশ রিপোর্ট পাঠায়নি ), তাহলে Crashlytics সমস্যাটিকে পিছিয়ে গেছে বলে মনে করবে এবং সমস্যাটি আবার খুলবে।
যখন কোনও সমস্যা রিগ্রেস হয়, তখন আমরা একটি রিগ্রেশন ডিটেকশন অ্যালার্ট পাঠাই এবং সমস্যাটিতে একটি রিগ্রেশন সিগন্যাল যোগ করি যাতে আপনাকে জানানো হয় যে Crashlytics সমস্যাটি পুনরায় খুলেছে। আমাদের রিগ্রেশন অ্যালগরিদমের কারণে যদি আপনি কোনও সমস্যা পুনরায় খুলতে না চান, তাহলে সমস্যাটি বন্ধ করার পরিবর্তে "মিউট" করুন।
যদি কোনও প্রতিবেদন এমন কোনও পুরানো অ্যাপ সংস্করণ থেকে আসে যা সমস্যাটি বন্ধ করার সময় কখনও কোনও ক্র্যাশ রিপোর্ট পাঠায়নি, তাহলে Crashlytics সমস্যাটিকে পিছিয়ে গেছে বলে মনে করে এবং সমস্যাটি পুনরায় খুলবে।
এই পরিস্থিতি নিম্নলিখিত পরিস্থিতিতে ঘটতে পারে: আপনি একটি বাগ সংশোধন করেছেন এবং আপনার অ্যাপের একটি নতুন সংস্করণ প্রকাশ করেছেন, কিন্তু আপনার এখনও পুরানো সংস্করণগুলিতে এমন ব্যবহারকারী আছেন যাদের বাগ সংশোধন করা হয়নি। যদি, দৈবক্রমে, সমস্যাটি বন্ধ করার সময় সেই পুরানো সংস্করণগুলির মধ্যে একটি কখনও কোনও ক্র্যাশ রিপোর্ট না পাঠায় এবং সেই ব্যবহারকারীরা বাগটির সম্মুখীন হতে শুরু করে, তাহলে সেই ক্র্যাশ রিপোর্টগুলি একটি রিগ্রেসড সমস্যা তৈরি করবে।
আমাদের রিগ্রেশন অ্যালগরিদমের কারণে যদি আপনি কোনও সমস্যা পুনরায় খুলতে না চান, তাহলে সমস্যাটি বন্ধ করার পরিবর্তে "মিউট" করুন।