Flutter-এর জন্য Crashlytics ব্যবহার করা শুরু করা

প্ল্যাটফর্ম বেছে নিন: iOS+ Android Android NDK Flutter Unity


এই নির্দেশিকা থেকে আপনি জানতে পারবেন কীভাবে আপনার Flutter অ্যাপে Firebase Crashlytics ব্যবহার শুরু করবেন।

আপনার অ্যাপে Crashlytics Flutter প্লাগ-ইন সেট-আপ করার পরে, আপনি Firebase কনসোলে ক্র্যাশ সংক্রান্ত বিস্তারিত রিপোর্ট পেতে পারেন।

Crashlytics সেট-আপ করার জন্য কমান্ড-লাইন টুল ও আপনার IDE, দুটিই ব্যবহার করতে হয়। সেট-আপ সম্পূর্ণ করতে, Firebase-এ আপনার প্রথম ক্র্যাশ রিপোর্ট পাঠাতে আপনাকে একটি টেস্ট এক্সেপশন থ্রো করতে বাধ্য করতে হবে।

শুরু করার আগে

  1. আপনি আগে থেকে না করে থাকলে, আপনার Flutter প্রোজেক্টে Firebase কনফিগার ও ইনিশিয়ালাইজ করুন।

  2. সাজেস্ট করা: ক্র্যাশ, নন-ফেটাল বা ANR ইভেন্টের আগে ব্যবহারকারীর অ্যাকশন বুঝতে অটোমেটিক ব্রেডক্রাম্ব লগ পেতে, আপনার Firebase প্রোজেক্টে Google Analytics চালু করতে হবে।

    • আপনি নতুন Firebase প্রোজেক্ট তৈরি করলে, প্রোজেক্ট তৈরির ওয়ার্কফ্লো চলাকালীন Google Analytics চালু করুন।

    • আপনি যদি আগে থেকে থাকা এমন কোনও Firebase প্রোজেক্ট ব্যবহার করেন যেখানে Google Analytics চালু করা নেই, তাহলে আপনি Firebase কনসোলের সেটিংস > ইন্টিগ্রেশন পৃষ্ঠা থেকে এটি চালু করতে পারবেন।

    মনে রাখবেন, Crashlytics-এর সাথে কাজ করে এমন সব Android ও Apple প্ল্যাটফর্মের জন্য ব্রেডক্রাম্ব লগ উপলভ্য (watchOS ছাড়া)।

ধাপ ১: আপনার Flutter প্রোজেক্টে Crashlytics যোগ করুন

  1. আপনার Flutter প্রোজেক্টের রুট থেকে, Crashlytics-এর জন্য Flutter প্লাগ-ইন ইনস্টল করতে নিম্নলিখিত কমান্ড রান করুন।

    ব্রেডক্রাম্ব লগ-এর সুবিধা নিতে, আপনার অ্যাপে Google Analytics-এর জন্য Flutter প্লাগ-ইনও যোগ করুন। আপনার Firebase প্রোজেক্টে Google Analytics চালু করা আছে কিনা তা নিশ্চিত করুন।

    flutter pub add firebase_crashlytics && flutter pub add firebase_analytics
    
  2. আপনার Flutter প্রোজেক্টের রুট ডিরেক্টরি থেকে, নিম্নলিখিত কমান্ড রান করুন:

    flutterfire configure
    

    এই কমান্ড রান করলে আপনার Flutter অ্যাপের Firebase কনফিগারেশন আপ-টু-ডেট থাকে এবং Android-এর জন্য আপনার অ্যাপে প্রয়োজনীয় Crashlytics Gradle প্লাগ-ইন যোগ করে।

  3. সম্পূর্ণ হয়ে গেলে, আপনার Flutter প্রোজেক্ট আবার তৈরি করুন:

    flutter run
    
  4. (ঐচ্ছিক) আপনার Flutter প্রোজেক্ট --split-debug-info ফ্ল্যাগ (এবং, ঐচ্ছিকভাবে, --obfuscate ফ্ল্যাগও) ব্যবহার করলে, আপনার অ্যাপের জন্য পাঠযোগ্য স্ট্যাক ট্রেস দেখানোর জন্য অতিরিক্ত ধাপের প্রয়োজন।

    • Apple প্ল্যাটফর্ম: আপনার প্রোজেক্টে সাজেস্ট করা ভার্সন কনফিগারেশন (Flutter 3.12.0+ এবং Crashlytics Flutter প্লাগ-ইন 3.3.4+) ব্যবহার করা হচ্ছে কিনা তা নিশ্চিত করুন যাতে আপনার প্রোজেক্ট অটোমেটিক Flutter সিম্বল (dSYM ফাইল) তৈরি করে Crashlytics-এ আপলোড করতে পারে।

    • Android: Flutter ডিবাগ সিম্বল আপলোড করতে Firebase CLI (v.11.9.0+) ব্যবহার করুন। অস্পষ্ট কোড বিল্ড থেকে ক্র্যাশ রিপোর্ট করার আগে আপনাকে ডিবাগ সিম্বল আপলোড করতে হবে।

      আপনার Flutter প্রোজেক্টের রুট ডিরেক্টরি থেকে, নিম্নলিখিত কমান্ড রান করুন:

      firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
      • FIREBASE_APP_ID: আপনার Firebase Android অ্যাপ আইডি (আপনার প্যাকেজের নাম নয়)
        Firebase Android অ্যাপ আইডির উদাহরণ: 1:567383003300:android:17104a2ced0c9b9b

      • PATH/TO/symbols: অ্যাপ্লিকেশন তৈরি করার সময় আপনি --split-debug-info ফ্ল্যাগে যে ডিরেক্টরি পাস করেন, এটিও সেই একই ডিরেক্টরি

ধাপ ২: ক্র্যাশ হ্যান্ডলার কনফিগার করা

আপনি FlutterError.onError-কে FirebaseCrashlytics.instance.recordFlutterFatalError দিয়ে ওভাররাইড করে Flutter ফ্রেমওয়ার্কে থ্রো করা সব সমস্যা অটোমেটিক ধরতে পারবেন:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await Firebase.initializeApp();

  // Pass all uncaught "fatal" errors from the framework to Crashlytics
  FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError;

  runApp(MyApp());
}

Flutter ফ্রেমওয়ার্কের মাধ্যমে ম্যানেজ করা হয় না এমন অ্যাসিঙ্ক্রোনাস সমস্যা ধরতে, PlatformDispatcher.instance.onError ব্যবহার করুন:

Future<void> main() async {
    WidgetsFlutterBinding.ensureInitialized();
    await Firebase.initializeApp();
    FlutterError.onError = (errorDetails) {
      FirebaseCrashlytics.instance.recordFlutterFatalError(errorDetails);
    };
    // Pass all uncaught asynchronous errors that aren't handled by the Flutter framework to Crashlytics
    PlatformDispatcher.instance.onError = (error, stack) {
      FirebaseCrashlytics.instance.recordError(error, stack, fatal: true);
      return true;
    };
    runApp(MyApp());

}

অন্যান্য ধরনের সমস্যা কীভাবে সমাধান করতে হয় তার উদাহরণ দেখতে, ক্র্যাশ রিপোর্ট কাস্টমাইজ করুন বিকল্প দেখুন।

ধাপ ৩: সেট-আপ সম্পূর্ণ করতে টেস্ট ক্র্যাশ জোর করে বন্ধ করুন

Crashlytics সেট-আপ করা সম্পূর্ণ করতে এবং Firebase কনসোলের Crashlytics ড্যাশবোর্ডে প্রাথমিক ডেটা দেখতে, আপনাকে একটি টেস্ট এক্সেপশন থ্রো করতে বাধ্য করতে হবে।

  1. আপনার অ্যাপে কোড যোগ করুন যা আপনি টেস্ট এক্সেপশন থ্রো করার জন্য ব্যবহার করতে পারেন।

    আপনি যদি এমন কোনও এরর হ্যান্ডলার যোগ করে থাকেন যা টপ-লেভেল Zone-এ FirebaseCrashlytics.instance.recordError(error, stack, fatal: true)-কে কল করে, তাহলে আপনার অ্যাপে একটি বোতাম যোগ করতে নিম্নলিখিত কোড ব্যবহার করতে পারেন যা প্রেস করা হলে একটি টেস্ট এক্সেপশন থ্রো করে:

    TextButton(
        onPressed: () => throw Exception(),
        child: const Text("Throw Test Exception"),
    ),
    
  2. আপনার অ্যাপ তৈরি করুন ও চালান।

  3. আপনার অ্যাপের প্রথম রিপোর্ট পাঠাতে টেস্ট এক্সেপশন থ্রো করতে বাধ্য করুন:

    1. আপনার টেস্ট ডিভাইস বা এমুলেটর থেকে অ্যাপ খুলুন।

    2. আপনার অ্যাপে, উপরে উল্লেখ করা কোড ব্যবহার করে আপনি যে টেস্ট এক্সেপশন বোতাম যোগ করেছেন, সেটি প্রেস করুন।

  4. Firebase কনসোলে, DevOps ও এনগেজমেন্ট > Crashlytics ড্যাশবোর্ডে গিয়ে আপনার টেস্ট ক্র্যাশ রিপোর্ট চেক করুন।

    আপনি কনসোল রিফ্রেশ করার পরেও পাঁচ মিনিট পরে টেস্ট ক্র্যাশ দেখতে না পেলে, আপনার অ্যাপ ক্র্যাশ রিপোর্ট পাঠাচ্ছে কিনা তা দেখতে ডিবাগ লগিং চালু করুন।


আর এইটুকুই! Crashlytics এখন ক্র্যাশ এবং Android-এ নন-ফেটাল সমস্যা ও ANR-এর জন্য আপনার অ্যাপ মনিটর করছে। আপনার সব রিপোর্ট ও পরিসংখ্যান দেখতে ও খতিয়ে দেখতে Crashlytics ড্যাশবোর্ড দেখুন।

পরবর্তী ধাপ