| เลือกแพลตฟอร์ม: | 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) โปรดตรวจสอบว่าคุณได้ตั้งค่า
ดังนี้
คลิกแท็บขั้นตอนการสร้าง แล้วขยายส่วนเรียกใช้สคริปต์
ในส่วนไฟล์อินพุต ให้ตรวจสอบว่าคุณมีเส้นทางไปยังตำแหน่ง ของไฟล์ต่อไปนี้
${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-click อีกครั้ง แล้วคลิกแสดงเนื้อหาของแพ็กเกจ
ภายใน
.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