الحصول على تقارير أعطال قابلة للقراءة في لوحة بيانات Crashlytics (منصات Apple)

اختيار المنصة: iOS+ Android Flutter Unity


تعالج منصة Firebase Crashlytics تلقائيًا ملفات رموز تصحيح الأخطاء (dSYM) لتقديم تقارير الأعطال التي تم فك تشفيرها والتي يمكن للمستخدمين العاديين قراءتها. عادةً ما يتم ضبط هذا السلوك أثناء الإعداد الأولي لـ Crashlytics في تطبيقك، وتحديدًا من خلال إضافة نص برمجي يتم تشغيله ويحمّل تلقائيًا ملفات dSYM أثناء مرحلة تصميم تطبيقك.

في بعض الحالات، قد يتعذّر تحميل ملفات dSYM تلقائيًا. يقدّم هذا الدليل بعض الطرق لتحديد المشاكل وحلّها عندما Crashlytics لا تتمكّن من العثور على ملفات dSYM الخاصة بتطبيقك.

التأكّد من أنّ Xcode يمكنه معالجة ملفات dSYM وتحميلها تلقائيًا

عند إعداد Crashlytics في تطبيقك، تم ضبط نص برمجي يتم تشغيله لمعالجة ملفات dSYM وتحميلها تلقائيًا.

يجب التأكّد من أنّ إعدادات النص البرمجي الذي يتم تشغيله في منصة Crashlytics متوافقة مع المتطلبات الجديدة التي بدأت مع Xcode 15. إذا لم تكن الإعدادات متوافقة، قد يظهر الخطأ التالي:
error: Info.plist Error Unable to process Info.plist at path ....

يتطلب Xcode 15 والإصدارات الأحدث تحديدًا توفير مجموعة أكثر اكتمالاً من مواقع الملفات. بالنسبة إلى النص البرمجي الذي يتم تشغيله في Crashlytics (firebase-ios-sdk/Crashlytics/run)، يجب التأكّد من أنّ الإعدادات التالية متوفرة:

  1. النقر على علامة التبويب مراحل التصميم ، ثم توسيع قسم تشغيل النص البرمجي

  2. في قسم الملفات المُدخَلة ، يجب التأكّد من توفّر مسارات مواقع الملفات التالية:

    ${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)
    إذا كان لديك ENABLE_USER_SCRIPT_SANDBOXING=YES وENABLE_DEBUG_DYLIB=YES في إعدادات تصميم مشروعك، يجب تضمين ما يلي:
    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}.debug.dylib

التحقّق مما إذا كان Xcode يُنشئ ملفات dSYM

في أغلب الأحيان، تختفي ملفات dSYM لأنّ Xcode لا يُنشئها. عندما يتعذّر تحميل ملف، Crashlytics تعرض تنبيهًا بعنوان "ملف dSYM غير متوفّر" في الـ Firebase Console. إذا ظهر هذا التنبيه، يجب أولاً التأكّد من أنّ Xcode يُنشئ ملف dSYM الصحيح لكل تصميم:

  1. فتح مشروعك في Xcode، ثم اختيار ملف المشروع في Xcode Navigator

  2. اختيار هدف التصميم الرئيسي

  3. فتح علامة التبويب إعدادات التصميم للهدف، ثم النقر على الكل

  4. البحث عن debug information format

  5. ضبط تنسيق معلومات تصحيح الأخطاء على ‫DWARF مع ملف dSYM لجميع أنواع التصميم

  6. إعادة تصميم التطبيق

من المفترض أن تظهر تقارير الأعطال الآن في Crashlytics لوحة البيانات. إذا استمرت المشكلة أو ظهرت أخطاء أخرى، يُرجى محاولة تحديد موقع ملفات dSYM و تحميلها إلى Crashlytics يدويًا.

تحديد موقع ملفات dSYM على جهاز محلي

يُرجى تشغيل الأمر التالي لعرض جميع أرقام تعريف UUID لملفات dSYM على جهازك والبحث عن ملف dSYM غير المتوفّر:

mdfind -name .dSYM | while read -r line; do dwarfdump -u "$line"; done

بعد العثور على ملف dSYM، يجب تحميله يدويًا إلى Crashlytics. إذا لم يعرض الأمر mdfind أي نتائج، يمكنك البحث في دليل Products الذي يحتوي على ملف .app (يقع دليل Products في Derived Data تلقائيًا). إذا تم إصدار تطبيقك في مرحلة الإنتاج، يمكنك أيضًا البحث عن ملف dSYM في دليل .xcarchive على القرص:

  1. في Xcode، افتح نافذة المنظِّم ، ثم اختَر تطبيقك من القائمة. يعرض Xcode قائمة بالأرشيفات الخاصة بمشروعك.

  2. انقر مع الضغط على مفتاح Control على أحد الأرشيفات لعرضه في Finder. انقر عليه مرة أخرى مع الضغط على مفتاح Control، ثم انقر على عرض محتويات الحزمة.

  3. ضمن .xcarchive، هناك دليل dSYMs يحتوي على ملفات dSYM التي تم إنشاؤها كجزء من عملية الأرشفة في Xcode.

تحميل ملفات dSYM

Crashlytics تتيح طرقًا متعددة لتحميل ملفات dSYM، إما تلقائيًا أو يدويًا.

(ننصح به) معالجة ملفات dSYM وتحميلها تلقائيًا

عند إعداد Crashlytics لأول مرة، من المرجّح أن يكون هذا السلوك التلقائي للتحميل قد تم ضبطه لتطبيقك. ومع ذلك، إذا تعذّرت عمليات التحميل التلقائي، يجب التأكّد من أنّ الإعدادات صحيحة.

تحميل ملفات dSYM يدويًا

إذا تعذّرت عمليات التحميل التلقائي، يمكنك تحميل ملفات dSYM يدويًا باستخدام أي من الخيارَين التاليَين.

  • الخيار 1: استخدام واجهة "السحب والإفلات" في Firebase Console لتحميل ملف مضغوط يحتوي على ملفات dSYM (الانتقال إلى لوحة بيانات DevOps & Engagement > Crashlytics > علامة التبويب dSYMs).

  • الخيار 2: استخدام النص البرمجي upload-symbols الذي يمكن استدعاؤه من أي مكان في عملية التصميم لتحميل ملفات dSYM يدويًا لتشغيل النص البرمجي upload-symbols، يجب استخدام أي من الخيارَين التاليَين:

    • الخيار "أ": تضمين السطر التالي في عملية التصميم:

      find dSYM_DIRECTORY -name "*.dSYM" | xargs -I \{\} $PODS_ROOT/FirebaseCrashlytics/upload-symbols -gsp /PATH/TO/GoogleService-Info.plist -p PLATFORM \{\}
    • الخيار "ب": تشغيل النص البرمجي مباشرةً من الجهاز الطرفي:

      /PATH/TO/PODS/DIRECTORY/FirebaseCrashlytics/upload-symbols -gsp /PATH/TO/GoogleService-Info.plist -p ios /PATH/TO/dSYMs

    للاطّلاع على ملاحظات الاستخدام والتعليمات الإضافية حول هذا النص البرمجي، يجب تشغيل upload-symbols مع المعلمة --help.