| เลือกแพลตฟอร์ม: | 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
ในส่วน Input Files ให้ตรวจสอบว่าคุณมีเส้นทางสำหรับตำแหน่งของไฟล์ต่อไปนี้
${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ตั้งค่า Debug Information Format เป็น DWARF with dSYM File สำหรับประเภทการสร้างทั้งหมด
สร้างแอปอีกครั้ง
ตอนนี้รายงานข้อขัดข้องควรปรากฏใน Crashlytics แดชบอร์ด แล้ว หากปัญหายังคงอยู่หรือคุณ พบข้อผิดพลาดอื่นๆ ให้ลองค้นหา dSYM แล้ว อัปโหลดไปยัง Crashlytics ด้วยตนเอง
ค้นหา dSYM ในเครื่องภายใน
เรียกใช้คำสั่งต่อไปนี้เพื่อแสดง UUID ของ dSYM ทั้งหมดในเครื่องและค้นหา dSYM ที่หายไป
mdfind -name .dSYM | while read -r line; do dwarfdump -u "$line"; done
เมื่อพบ dSYM แล้ว ให้อัปโหลดไปยัง Crashlytics ด้วยตนเองCrashlytics
หากคำสั่ง mdfind ไม่แสดงผลลัพธ์ใดๆ คุณสามารถดูได้ในไดเรกทอรี Products ที่มีไฟล์ .app (โดยค่าเริ่มต้น ไดเรกทอรี Products จะอยู่ใน Derived Data) หากแอปเผยแพร่ในเวอร์ชันที่ใช้งานจริงแล้ว คุณยังสามารถค้นหา dSYM ของแอปได้ในไดเรกทอรี .xcarchive บนดิสก์ โดยทำดังนี้
ใน Xcode ให้เปิดหน้าต่าง Organizer แล้วเลือกแอปจากรายการ Xcode จะแสดงรายการที่เก็บถาวรสำหรับโปรเจ็กต์
กดปุ่ม Control แล้วคลิกที่เก็บถาวรเพื่อดูใน Finder กดปุ่ม Control แล้วคลิกอีกครั้ง จากนั้นคลิก Show Package Contents
ภายใน
.xcarchiveจะมีไดเรกทอรี dSYMs ซึ่งมี dSYM ที่สร้างขึ้นเป็นส่วนหนึ่งของกระบวนการเก็บถาวรของ 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