รับรายงานข้อขัดข้องที่อ่านได้ในแดชบอร์ด 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. คลิกแท็บ Build Phases แล้วขยายส่วน Run Script

  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. เปิดแท็บ Build Settings ของเป้าหมาย แล้วคลิก All

  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 ที่มี dSYMs ที่สร้างขึ้นเป็นส่วนหนึ่งของกระบวนการเก็บถาวรของ Xcode

อัปโหลด dSYM

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

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

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

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

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

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