รับรายงานข้อขัดข้องที่อ่านได้ในหน้าแดชบอร์ด 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 Navigator

  2. เลือกเป้าหมายบิลด์หลัก

  3. เปิดแท็บการตั้งค่าบิลด์ของเป้าหมาย แล้วคลิกทั้งหมด

  4. ค้นหา debug information format

  5. ตั้งค่ารูปแบบข้อมูลการแก้ไขข้อบกพร่องเป็น DWARF ด้วย dSYM สำหรับประเภทบิลด์ทั้งหมด

  6. สร้างแอปอีกครั้ง

ตอนนี้รายงานข้อขัดข้องของคุณควรปรากฏในแดชบอร์ดของ Crashlytics หากปัญหายังคงอยู่หรือพบข้อผิดพลาดอื่นๆ ให้ลองค้นหา dSYM แล้วอัปโหลดไปยัง Crashlytics ด้วยตนเอง

ค้นหา dSYM ในเครื่อง

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

  2. กด Ctrl และคลิกที่เก็บถาวรเพื่อดูใน 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 ให้ใช้ตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้

    • ตัวเลือก ก: ระบุบรรทัดต่อไปนี้ในกระบวนการสร้างของคุณ

      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