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