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

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

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

  4. ค้นหา debug information format

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

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

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

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

เรียกใช้คำสั่งต่อไปนี้เพื่อแสดง dSYMs ทั้งหมดของคุณ UUID ในเครื่องและ ค้นหา 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. กด 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