โดยค่าเริ่มต้น 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 ของ 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
บนดิสก์ได้ด้วย โดยทำดังนี้
ใน Xcode ให้เปิดหน้าต่างผู้จัดระเบียบ แล้วเลือกแอปจากรายการ Xcode จะแสดงรายการที่เก็บถาวรของโปรเจ็กต์
กดแป้น Control ค้างไว้แล้วคลิกที่เก็บถาวรเพื่อดูใน Finder กดแป้น Control ค้างไว้แล้วคลิกไฟล์อีกครั้ง แล้วคลิกแสดงเนื้อหาแพ็กเกจ
ภายใน
.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