รับรายงานข้อขัดข้องที่อ่านได้ในหน้าแดชบอร์ด Crashlytics


โดยค่าเริ่มต้น 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)

ตรวจสอบว่า Xcode กำลังสร้าง dSYM หรือไม่

บ่อยครั้งที่ไฟล์ dSYM หายไปเนื่องจาก Xcode ไม่ได้สร้างไฟล์ดังกล่าว เมื่อการอัปโหลดล้มเหลว Crashlytics จะแสดงข้อความ "ขาด dSYM" การแจ้งเตือนใน คอนโซล Firebase หากคุณได้รับการแจ้งเตือนนี้ ให้ตรวจสอบก่อนว่า Xcode สร้าง dSYM ที่ถูกต้องสำหรับทุกบิลด์:

  1. เปิดโปรเจ็กต์ใน Xcode แล้วเลือกไฟล์โปรเจ็กต์ใน Xcode ตัวนำทาง

  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. กด Ctrl และคลิกที่เก็บถาวรเพื่อดูใน Finder กด Control และคลิกอีกครั้ง และ แล้วคลิกแสดงเนื้อหาแพ็กเกจ

  3. ภายใน .xcarchive คือไดเรกทอรี dSYM ที่มี dSYM ที่สร้างขึ้นเป็นส่วนหนึ่งของกระบวนการเก็บถาวรของ Xcode

อัปโหลด dSYM

Crashlytics รองรับการอัปโหลดไฟล์ dSYM หลายวิธี ไม่ว่าจะเป็น โดยอัตโนมัติหรือด้วยตนเอง

(แนะนำ) ประมวลผล dSYM และอัปโหลดไฟล์โดยอัตโนมัติ

เมื่อตั้งค่า Crashlytics เป็นครั้งแรก คุณอาจกำหนดค่าลักษณะการอัปโหลดอัตโนมัตินี้ให้กับแอปแล้ว แต่หากการอัปโหลดอัตโนมัติไม่สำเร็จ ให้ตรวจสอบว่าการกำหนดค่าถูกต้อง

อัปโหลดไฟล์ dSYM ด้วยตนเอง

หากอัปโหลดอัตโนมัติไม่สำเร็จ คุณสามารถอัปโหลดไฟล์ dSYM ด้วยตนเองได้โดยใช้ตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้

  • ตัวเลือกที่ 1: ใช้ "ลากและวาง" แบบคอนโซล ตัวเลือกในการอัปโหลดไฟล์ ZIP ที่มีไฟล์ dSYM (ไปที่ คอนโซล Firebase > Crashlytics แท็บ dSYM)

  • ตัวเลือกที่ 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