โดยค่าเริ่มต้น 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)
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 ที่ถูกต้องสำหรับทุกบิลด์หรือไม่
เปิดโปรเจ็กต์ใน 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
ไม่แสดงผลลัพธ์ใดๆ คุณสามารถดูในไดเรกทอรี Products
ที่ .app
อยู่ (โดยค่าเริ่มต้น ไดเรกทอรี Products
จะอยู่ใน Derived Data
) หากแอปของคุณเผยแพร่ไปยังเวอร์ชันที่ใช้งานจริงแล้ว คุณยังค้นหา dSYM ของแอปได้ในไดเรกทอรี .xcarchive
บนดิสก์
ใน Xcode ให้เปิดหน้าต่าง Organizer แล้วเลือกแอปจากรายการ Xcode จะแสดงรายการที่เก็บถาวรสำหรับโปรเจ็กต์ของคุณ
กด Control ค้างไว้แล้วคลิกที่เก็บถาวรเพื่อดูใน 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
ให้ใช้ตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้ตัวเลือก A: ใส่บรรทัดต่อไปนี้ในกระบวนการบิลด์
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