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

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

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

อัปโหลด dSYM

Crashlytics รองรับการอัปโหลดไฟล์ dSYMs หลายวิธี ทั้งแบบอัตโนมัติหรือด้วยตนเอง

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

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

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

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

  • ตัวเลือกที่ 1: ใช้ตัวเลือก "ลากและวาง" แบบใช้คอนโซลเพื่ออัปโหลดไฟล์ ZIP ที่มีไฟล์ dSYM ของคุณ (ไปที่คอนโซล Firebase > 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