โดยค่าเริ่มต้น 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
) ให้ตรวจสอบว่าคุณมีการตั้งค่าต่อไปนี้
คลิกแท็บเฟสของการสร้าง แล้วขยายส่วนเรียกใช้สคริปต์
ในส่วนไฟล์อินพุต ให้ตรวจสอบว่าคุณมีเส้นทางสำหรับตำแหน่งของไฟล์ต่อไปนี้
${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 ที่ถูกต้องสำหรับบิลด์ทั้งหมด
เปิดโปรเจ็กต์ใน Xcode แล้วเลือกไฟล์โปรเจ็กต์ใน Xcode Navigator
เลือกเป้าหมายบิลด์หลัก
เปิดแท็บการตั้งค่าบิลด์ของเป้าหมาย แล้วคลิกทั้งหมด
ค้นหา
debug information format
ตั้งค่ารูปแบบข้อมูลการแก้ไขข้อบกพร่องเป็น DWARF ด้วย dSYM สำหรับประเภทบิลด์ทั้งหมด
สร้างแอปอีกครั้ง
ตอนนี้รายงานข้อขัดข้องของคุณควรปรากฏในแดชบอร์ดของ 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
ในดิสก์ได้ด้วย
ใน Xcode ให้เปิดหน้าต่าง Orgr แล้วเลือกแอปจากรายการ Xcode จะแสดงรายการที่เก็บถาวรสำหรับโปรเจ็กต์ของคุณ
กด Ctrl และคลิกที่เก็บถาวรเพื่อดูใน Finder กด Control และคลิกอีกครั้ง จากนั้นคลิกแสดงเนื้อหาแพ็กเกจ
ภายใน
.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