รับรายงานข้อขัดข้องที่อ่านได้ในหน้าแดชบอร์ด 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 ของ dSYM ทั้งหมดในเครื่องและค้นหา dSYM ที่ขาดหายไป

mdfind -name .dSYM | while read -r line; do dwarfdump -u "$line"; done

เมื่อพบ dSYM แล้ว ให้อัปโหลดไปยัง Crashlytics ด้วยตนเอง หากคำสั่ง mdfind แสดงผลลัพธ์เป็น 0 ให้ค้นหาในไดเรกทอรี Products ที่มี .app อยู่ (โดยค่าเริ่มต้น ไดเรกทอรี Products จะอยู่ใน Derived Data) หากเผยแพร่แอปเป็นเวอร์ชันที่ใช้งานจริงแล้ว คุณยังค้นหา dSYM ของแอปในไดเรกทอรี .xcarchive บนดิสก์ได้ด้วย โดยทำดังนี้

  1. ใน Xcode ให้เปิดหน้าต่างผู้จัดระเบียบ แล้วเลือกแอปจากรายการ Xcode จะแสดงรายการที่เก็บถาวรของโปรเจ็กต์

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