Crashlytics ড্যাশবোর্ডে পঠনযোগ্য ক্র্যাশ রিপোর্ট পান


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

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

অ্যাপল প্ল্যাটফর্ম

dSYM ফাইল আপলোড করার জন্য আপনার কনফিগারেশন চেক করুন

Crashlytics Flutter প্লাগইন যোগ করা এবং flutterfire configure কমান্ড চালানোর ফলে আপনার প্রকল্পের Xcode ওয়ার্কস্পেসে একটি রান স্ক্রিপ্ট যোগ করার চেষ্টা করা হবে যা Crashlytics এ প্রয়োজনীয় dSYM চিহ্ন ফাইল খুঁজে এবং আপলোড করে। এই ফাইলগুলি ছাড়া, আপনি Crashlytics ড্যাশবোর্ডে একটি "মিসিং dSYM" সতর্কতা দেখতে পাবেন এবং অনুপস্থিত ফাইলগুলি আপলোড না হওয়া পর্যন্ত ব্যাকএন্ড দ্বারা ব্যতিক্রমগুলি রাখা হবে৷

আপনার যদি এই সমস্যা থাকে তবে প্রথমে নিশ্চিত করুন যে আপনার রান স্ক্রিপ্ট ইনস্টল করা আছে:

  1. আপনার প্রকল্পের iOS ডিরেক্টরিতে Xcode ওয়ার্কস্পেস ফাইলটি সনাক্ত করুন এবং খুলুন ( FLUTTER_PROJECT_NAME /ios/Runner.xcworkspace )।

  2. রানার টার্গেটের বিল্ড ফেজগুলিতে [firebase_crashlytics] Crashlytics Upload Symbols নামে একটি রান স্ক্রিপ্ট যোগ করা হয়েছে কিনা তা শনাক্ত করুন।

    রান স্ক্রিপ্টটি বিদ্যমান নেই বা রান স্ক্রিপ্ট বিদ্যমান কিনা তা জন্য নীচের প্রযোজ্য বিভাগটি দেখুন।

যদি এই রান স্ক্রিপ্টটি বিদ্যমান না থাকে তবে আপনি এটি ম্যানুয়ালি যোগ করতে পারেন:

  1. আপনার Apple অ্যাপের জন্য Firebase অ্যাপ আইডি খুঁজুন। এখানে দুটি ভিন্ন জায়গা রয়েছে যেখানে আপনি এই আইডিটি খুঁজে পেতে পারেন:

    • Firebase কনসোলে, আপনার > প্রকল্প সেটিংসআপনার অ্যাপস কার্ডে নিচে স্ক্রোল করুন, তারপর অ্যাপ আইডি সহ অ্যাপের তথ্য দেখতে আপনার Firebase Apple অ্যাপে ক্লিক করুন।

    • আপনার Flutter প্রকল্পের শীর্ষ-স্তরের ডিরেক্টরিতে, আপনার firebase_options.dart ফাইলটি খুঁজুন। আপনার Apple অ্যাপের Firebase অ্যাপ আইডিটি GOOGLE_APP_ID হিসাবে লেবেলযুক্ত।

  2. > নতুন রান স্ক্রিপ্ট ফেজ ক্লিক করুন।

    নিশ্চিত করুন যে এই নতুন রান স্ক্রিপ্ট পর্বটি আপনার প্রকল্পের শেষ বিল্ড ফেজ। অন্যথায়, Crashlytics সঠিকভাবে dSYMs প্রক্রিয়া করতে পারবে না।

  3. নতুন রান স্ক্রিপ্ট বিভাগটি প্রসারিত করুন।

  4. স্ক্রিপ্ট ক্ষেত্রে ( শেল লেবেলের অধীনে অবস্থিত), নিম্নলিখিত রান স্ক্রিপ্ট যোগ করুন।

    এই স্ক্রিপ্টগুলি আপনার dSYM ফাইলগুলি প্রক্রিয়া করে এবং ফাইলগুলি Crashlytics এ আপলোড করে৷

    $PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase --validate -ai FIREBASE_APP_ID -- $DWARF_DSYM_FOLDER_PATH/App.framework.dSYM
    $PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase -ai FIREBASE_APP_ID -- $DWARF_DSYM_FOLDER_PATH/App.framework.dSYM 
    • FIREBASE_APP_ID : আপনার ফায়ারবেস অ্যাপল অ্যাপ আইডি (আপনার অ্যাপল বান্ডেল আইডি নয়)
      উদাহরণ Firebase Apple App ID: 1:1234567890:ios:321abc456def7890

    আপনার ফায়ারবেস অ্যাপ আইডি খোঁজার দুটি উপায় এখানে রয়েছে:

    • আপনার GoogleService-Info.plist ফাইলে, আপনার অ্যাপ আইডি হল GOOGLE_APP_ID মান; বা

    • Firebase কনসোলে, আপনার প্রকল্প সেটিংসে যান। আপনার অ্যাপস কার্ডে নিচে স্ক্রোল করুন, তারপর পছন্দসই Firebase অ্যাপের অ্যাপ আইডি খুঁজতে ক্লিক করুন।

  5. ইনপুট ফাইল বিভাগে, নিম্নলিখিত ফাইলগুলির অবস্থানের জন্য পাথ যোগ করুন:

    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}
    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}
    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist
    $(TARGET_BUILD_DIR)/$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/GoogleService-Info.plist
    $(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)

    রান স্ক্রিপ্টের জন্য বিল্ড ফাইলগুলি উপলব্ধ রয়েছে তা নিশ্চিত করতে Xcode এই ইনপুট ফাইলগুলির জন্য নির্দিষ্ট অবস্থানগুলিতে দেখায়। এছাড়াও, যদি ব্যবহারকারীর স্ক্রিপ্ট স্যান্ডবক্সিং সক্ষম করা থাকে, Xcode শুধুমাত্র রান স্ক্রিপ্টকে ইনপুট ফাইলগুলিতে নির্দিষ্ট করা ফাইলগুলি অ্যাক্সেস করার অনুমতি দেয়৷

    • আপনার প্রকল্পের dSYM ফাইলগুলির অবস্থান প্রদান করা Crashlytics dSYM প্রক্রিয়া করতে সক্ষম করে৷
    • আপনার অ্যাপের তৈরি GoogleService-Info.plist ফাইলের অবস্থান প্রদান করা Crashlytics আপনার Firebase অ্যাপের সাথে dSYMs যুক্ত করতে সক্ষম করে।
    • আপনার অ্যাপের এক্সিকিউটেবলের অবস্থান প্রদান করা স্ক্রিপ্টটিকে একই dSYM-এর ডুপ্লিকেট আপলোড প্রতিরোধ করতে দেয়। মনে রাখবেন যে অ্যাপ বাইনারি আপলোড করা হয় না

রান স্ক্রিপ্টটি বিদ্যমান থাকলে, dSYM সমস্যা সমাধানের জন্য অ্যাপল-নির্দিষ্ট নির্দেশিকা পড়ুন। আপনি যদি বর্ণিত প্রক্রিয়ার মাধ্যমে আপনার dSYM ফাইলগুলি আপলোড করতে চান তবে আপনাকে নিম্নলিখিত অতিরিক্ত পদক্ষেপগুলি গ্রহণ করতে হবে:

  1. আপনার Apple অ্যাপের জন্য Firebase অ্যাপ আইডি খুঁজুন। এখানে দুটি ভিন্ন জায়গা রয়েছে যেখানে আপনি এই আইডিটি খুঁজে পেতে পারেন:

    • Firebase কনসোলে, আপনার > প্রকল্প সেটিংসআপনার অ্যাপস কার্ডে নিচে স্ক্রোল করুন, তারপর অ্যাপ আইডি সহ অ্যাপের তথ্য দেখতে আপনার Firebase Apple অ্যাপে ক্লিক করুন।

    • আপনার Flutter প্রকল্পের শীর্ষ-স্তরের ডিরেক্টরিতে, আপনার firebase_options.dart ফাইলটি খুঁজুন। আপনার Apple অ্যাপের Firebase অ্যাপ আইডিটি GOOGLE_APP_ID হিসাবে লেবেলযুক্ত।

  2. upload-symbols স্ক্রিপ্ট চালানোর সময়, এর পরিবর্তে -ai FIREBASE_APPLE_APP_ID ব্যবহার করুন -gsp /path/to/GoogleService-Info.plist

Flutter এবং Crashlytics জন্য আপনার সংস্করণ কনফিগারেশন পরীক্ষা করুন (যদি --split-debug-info পতাকা ব্যবহার করেন)

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

নিশ্চিত করুন যে আপনার প্রকল্পটি প্রস্তাবিত সংস্করণ কনফিগারেশন (ফ্লাটার 3.12.0+ এবং Crashlytics ফ্লাটার প্লাগইন 3.3.4+) ব্যবহার করছে যাতে আপনার প্রকল্পটি স্বয়ংক্রিয়ভাবে Crashlytics ফ্লাটার চিহ্ন (dSYM ফাইল) তৈরি এবং আপলোড করতে পারে।

অ্যান্ড্রয়েড

আপনার নির্ভরতা কনফিগারেশন পরীক্ষা করুন

flutterfire configure কমান্ড আপনার প্রকল্পের Gradle বিল্ড ফাইলগুলিতে প্রয়োজনীয় নির্ভরতা যোগ করার চেষ্টা করে। এই নির্ভরতাগুলি ছাড়া, Firebase কনসোলে ক্র্যাশ রিপোর্টগুলি অস্পষ্ট হয়ে যেতে পারে যদি অস্পষ্টতা চালু থাকে।

নিম্নলিখিত লাইনগুলি প্রজেক্ট-লেভেল build.gradle এবং app-level build.gradle এ উপস্থিত রয়েছে তা নিশ্চিত করুন:

  • প্রকল্প-স্তরের বিল্ড ফাইলে ( android/build.gradle ), নিম্নলিখিত লাইনটি পরীক্ষা করুন:

    dependencies {
    // ... other dependencies
    
    classpath 'com.google.gms:google-services:4.3.5'
    classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1'
    }
  • অ্যাপ-লেভেল বিল্ড ফাইলে ( android/app/build.gradle ), নিম্নলিখিত লাইনটি পরীক্ষা করুন:

    // ... other imports
    
    android {
    // ... your android config
    }
    
    dependencies {
    // ... your dependencies
    }
    
    // This section must appear at the bottom of the file
    apply plugin: 'com.google.gms.google-services'
    apply plugin: 'com.google.firebase.crashlytics'

আপনি ফ্লটার চিহ্ন আপলোড করতে CLI ব্যবহার করছেন কিনা তা পরীক্ষা করুন (যদি --split-debug-info পতাকা ব্যবহার করেন)

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

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

আপনার ফ্লটার প্রকল্পের রুট ডিরেক্টরি থেকে, নিম্নলিখিত কমান্ডটি চালান:

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

    আপনার ফায়ারবেস অ্যাপ আইডি খোঁজার দুটি উপায় এখানে রয়েছে:

    • আপনার google-services.json ফাইলে, আপনার অ্যাপ আইডি হল mobilesdk_app_id মান; বা

    • Firebase কনসোলে, আপনার প্রকল্প সেটিংসে যান। আপনার অ্যাপস কার্ডে নিচে স্ক্রোল করুন, তারপর পছন্দসই Firebase অ্যাপের অ্যাপ আইডি খুঁজতে ক্লিক করুন।

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

সমস্যা চলতে থাকলে, অস্পষ্ট প্রতিবেদনের সমস্যা সমাধানের জন্য Android-নির্দিষ্ট নির্দেশিকা পড়ুন।