| เลือกแพลตฟอร์ม | iOS+ Android Flutter Unity |
โดยค่าเริ่มต้น 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) โปรดตรวจสอบว่าคุณได้ตั้งค่าต่อไปนี้แล้ว
คลิกแท็บ Build Phases แล้วขยายส่วน Run Script
ในส่วนไฟล์อินพุต ให้ตรวจสอบว่าคุณมีเส้นทางสำหรับตำแหน่งของไฟล์ต่อไปนี้
${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
เลือกเป้าหมายการสร้างหลัก
เปิดแท็บ Build Settings ของเป้าหมาย แล้วคลิก All
ค้นหา
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 ที่มี dSYMs ที่สร้างขึ้นเป็นส่วนหนึ่งของกระบวนการเก็บถาวรของ Xcode
อัปโหลด dSYM
Crashlytics รองรับการอัปโหลดไฟล์ dSYM หลายวิธี ไม่ว่าจะเป็นโดยอัตโนมัติหรือด้วยตนเอง
(แนะนำ) ประมวลผล dSYM และอัปโหลดไฟล์โดยอัตโนมัติ
เมื่อตั้งค่า Crashlytics เป็นครั้งแรก คุณน่าจะกำหนดค่าลักษณะการทำงานของการอัปโหลดอัตโนมัตินี้สำหรับแอปของคุณแล้ว อย่างไรก็ตาม หากการอัปโหลดอัตโนมัติไม่สำเร็จ ให้ตรวจสอบว่าการกำหนดค่าถูกต้อง
อัปโหลดไฟล์ dSYM ด้วยตนเอง
หากการอัปโหลดอัตโนมัติไม่สำเร็จ คุณสามารถอัปโหลดไฟล์ dSYM ด้วยตนเองโดยใช้ตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้
ตัวเลือกที่ 1: ใช้อินเทอร์เฟซ "ลากและวาง" ในคอนโซล Firebase เพื่ออัปโหลดไฟล์ ZIP ที่มีไฟล์ dSYM (ไปที่แท็บ DevOps และการมีส่วนร่วม > แดชบอร์ด 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