รับรายงานข้อขัดข้องที่อ่านได้ในหน้าแดชบอร์ด 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)
    หากคุณมี 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 หากได้รับการแจ้งเตือนนี้ ให้ตรวจสอบก่อนว่า 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 ให้เปิดหน้าต่าง Organizer แล้วเลือกแอปจากรายการ Xcode จะแสดงรายการที่เก็บถาวรสำหรับโปรเจ็กต์ของคุณ

  2. กด Control ค้างไว้แล้วคลิกที่เก็บถาวรเพื่อดูใน Finder คลิก Control อีกครั้ง แล้วคลิกแสดงเนื้อหาแพ็กเกจ

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

อัปโหลด dSYM

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

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

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

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

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

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

  • ตัวเลือกที่ 2: ใช้สคริปต์ upload-symbols ที่เรียกใช้ได้จากทุกที่ในกระบวนการบิลด์เพื่ออัปโหลดไฟล์ dSYM ด้วยตนเอง หากต้องการเรียกใช้สคริปต์ upload-symbols ให้ใช้ตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้

    • ตัวเลือก A: ใส่บรรทัดต่อไปนี้ในกระบวนการบิลด์

      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