หน้านี้ให้ความช่วยเหลือในการแก้ปัญหาและคำตอบสำหรับคำถามที่พบบ่อยเกี่ยวกับการใช้ Crashlytics หากไม่พบสิ่งที่ต้องการหรือต้องการความช่วยเหลือเพิ่มเติม โปรดติดต่อทีมสนับสนุน Firebase
การแก้ปัญหาทั่วไป/คําถามที่พบบ่อย
เห็นปัญหาบางรายการในรูปแบบที่แตกต่างกัน (และบางครั้งเป็น "ตัวแปร") ในตารางปัญหา
คุณอาจสังเกตเห็นปัญหาที่แสดงในตารางปัญหาในคอนโซล Firebase อยู่ 2 รูปแบบ และคุณอาจเห็นฟีเจอร์ที่เรียกว่า "ตัวแปร" ในปัญหาบางรายการด้วย เหตุผลมีดังนี้
เมื่อต้นปี 2023 เราได้เปิดตัวเครื่องมือวิเคราะห์ที่ปรับปรุงแล้วสําหรับการจัดกลุ่มเหตุการณ์ รวมถึงการออกแบบที่อัปเดตและฟีเจอร์ขั้นสูงบางอย่างสําหรับปัญหาใหม่ๆ (เช่น ตัวแปร) อ่านรายละเอียดทั้งหมดได้ในบล็อกโพสต์ล่าสุดของเรา หรืออ่านไฮไลต์ได้ที่ด้านล่าง
Crashlytics จะวิเคราะห์เหตุการณ์ทั้งหมดจากแอป (เช่น ข้อขัดข้อง ข้อขัดข้องที่ไม่ร้ายแรง และ ANR) และสร้างกลุ่มเหตุการณ์ที่เรียกว่าปัญหา ซึ่งเหตุการณ์ทั้งหมดในปัญหาจะมีจุดที่ผิดพลาดเหมือนกัน
ตอนนี้เครื่องมือวิเคราะห์ที่ปรับปรุงแล้วจะพิจารณาแง่มุมต่างๆ ของเหตุการณ์ รวมถึงเฟรมในสแต็กเทรซ ข้อความข้อยกเว้น รหัสข้อผิดพลาด และลักษณะอื่นๆ ของแพลตฟอร์มหรือประเภทข้อผิดพลาด เพื่อจัดกลุ่มเหตุการณ์เป็นปัญหาเหล่านี้
อย่างไรก็ตาม สแต็กเทรซที่ทําให้เกิดความล้มเหลวภายในกลุ่มเหตุการณ์นี้อาจแตกต่างกัน สแต็กเทรซที่ต่างกันอาจหมายถึงสาเหตุหลักที่แตกต่างกัน ตอนนี้เราสร้างตัวแปรภายในปัญหาเพื่อแสดงถึงความแตกต่างที่เป็นไปได้นี้ โดยแต่ละตัวแปรคือกลุ่มย่อยของเหตุการณ์ในปัญหาที่มีจุดที่เกิดความผิดพลาดเดียวกันและสแต็กเทรซที่คล้ายกัน ตัวแปรช่วยให้คุณแก้ไขข้อบกพร่องสแต็กเทรซที่พบบ่อยที่สุดภายในปัญหาหนึ่งๆ และพิจารณาได้ว่าสาเหตุหลักที่แตกต่างกันทําให้เกิดความล้มเหลวหรือไม่
ประสบการณ์ที่คุณจะได้รับจากการปรับปรุงเหล่านี้มีดังนี้
ข้อมูลเมตาที่ปรับปรุงใหม่ซึ่งแสดงในแถวปัญหา
ตอนนี้คุณเข้าใจและจัดลำดับความสำคัญของปัญหาในแอปได้ง่ายขึ้นปัญหาที่ซ้ำกันน้อยลง
การเปลี่ยนแปลงหมายเลขบรรทัดจะไม่ทำให้เกิดปัญหาใหม่แก้ไขข้อบกพร่องของปัญหาที่ซับซ้อนซึ่งมีสาเหตุที่หลากหลายได้ง่ายขึ้น
ใช้ตัวแปรเพื่อแก้ไขข้อบกพร่องของสแต็กเทรซที่พบบ่อยที่สุดภายในปัญหาการแจ้งเตือนและสัญญาณที่สื่อความหมายมากขึ้น
ปัญหาใหม่หมายถึงข้อบกพร่องใหม่การค้นหาที่มีประสิทธิภาพมากขึ้น
ปัญหาแต่ละรายการจะมีข้อมูลเมตาที่ค้นหาได้มากขึ้น เช่น ประเภทข้อยกเว้นและชื่อแพ็กเกจ
การเปิดตัวการปรับปรุงเหล่านี้มีดังนี้
เมื่อได้รับเหตุการณ์ใหม่จากแอปของคุณ เราจะตรวจสอบว่าเหตุการณ์ดังกล่าวตรงกับปัญหาที่มีอยู่หรือไม่
หากไม่ตรงกัน เราจะใช้อัลกอริทึมการจัดกลุ่มเหตุการณ์ที่ชาญฉลาดยิ่งขึ้นกับเหตุการณ์นั้นโดยอัตโนมัติ และสร้างปัญหาใหม่ด้วยการออกแบบข้อมูลเมตาที่ปรับปรุงใหม่
นี่เป็นอัปเดตครั้งใหญ่ครั้งแรกที่เราทำกับการจัดกลุ่มเหตุการณ์ หากมีความคิดเห็นหรือพบปัญหาใดๆ โปรดแจ้งให้เราทราบโดย
ไม่เห็นบันทึกเบรดครัมบ์
หากไม่เห็นบันทึกเบรดครัมบ์ เราขอแนะนำให้ตรวจสอบการกําหนดค่าแอปเพื่อหา Google Analytics โปรดตรวจสอบว่าคุณมีคุณสมบัติตรงตามข้อกำหนดต่อไปนี้
คุณได้เปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase แล้ว
คุณได้เปิดใช้การแชร์ข้อมูลสําหรับ Google Analytics แล้ว ดูข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่านี้ในจัดการการตั้งค่าการแชร์ข้อมูล Analytics
คุณได้ เพิ่ม Firebase SDK สําหรับ Google Analytics ลงในแอปแล้ว SDK นี้ต้องเพิ่มนอกเหนือจาก Crashlytics SDK
คุณใช้ Firebase SDK เวอร์ชันล่าสุด สำหรับผลิตภัณฑ์ทั้งหมดที่คุณใช้ในแอป
โดยเฉพาะอย่างยิ่ง ให้ตรวจสอบว่าคุณใช้ อย่างน้อย Firebase SDK เวอร์ชันต่อไปนี้สําหรับ Google Analytics
iOS+ — v6.3.1+ (v8.9.0+ สําหรับ macOS และ tvOS)
ไม่เห็นการแจ้งเตือนอัตราความเร็ว
หากไม่เห็นการแจ้งเตือนเกี่ยวกับความเร็ว ให้ตรวจสอบว่าคุณใช้ Crashlytics SDK v10.8.0 ขึ้นไป
ไม่เห็นเมตริกที่ไม่มีข้อขัดข้อง (หรือเห็นเมตริกที่ไม่น่าเชื่อถือ)
หากไม่เห็นเมตริกที่ไม่มีข้อขัดข้อง (เช่น ผู้ใช้และเซสชันที่ไม่มีข้อขัดข้อง) หรือเห็นเมตริกที่ไม่น่าเชื่อถือ ให้ตรวจสอบสิ่งต่อไปนี้
ตรวจสอบว่าคุณใช้ Crashlytics SDK v10.8.0 ขึ้นไป
ตรวจสอบว่าการตั้งค่าการเก็บรวบรวมข้อมูลไม่ได้ส่งผลต่อคุณภาพของเมตริกที่ไม่มีการขัดข้อง
หากคุณเปิดใช้การรายงานแบบเลือกใช้ด้วยการปิดใช้การรายงานข้อขัดข้องอัตโนมัติ ระบบจะส่งข้อมูลข้อขัดข้องไปยัง Crashlytics จากผู้ใช้ที่เลือกให้เก็บรวบรวมข้อมูลอย่างชัดเจนเท่านั้น ดังนั้นความแม่นยำของเมตริกที่ไม่มีการขัดข้องจะได้รับผลกระทบเนื่องจาก Crashlytics มีเฉพาะข้อมูลข้อขัดข้องจากผู้ใช้ที่เลือกใช้เท่านั้น (ไม่ใช่ผู้ใช้ทั้งหมด) ซึ่งหมายความว่าเมตริกที่ไม่มีการขัดข้องอาจมีความน่าเชื่อถือน้อยลงและแสดงถึงเสถียรภาพโดยรวมของแอปน้อยลง
หากปิดใช้การเก็บรวบรวมข้อมูลอัตโนมัติ คุณสามารถใช้
sendUnsentReports
เพื่อส่งรายงานที่แคชไว้ในอุปกรณ์ไปยัง Crashlytics การใช้วิธีนี้จะส่งข้อมูลข้อขัดข้องไปยัง Crashlytics แต่จะไม่ส่งข้อมูลเซสชัน ซึ่งทําให้แผนภูมิคอนโซลแสดงค่าต่ำหรือ 0 สำหรับเมตริกที่ไม่มีการขัดข้อง
ระบบคำนวณผู้ใช้ที่ไม่พบข้อขัดข้องอย่างไร
ไม่มี/ไม่ได้อัปโหลด dSYM
หากต้องการอัปโหลด dSYM ของโปรเจ็กต์และรับเอาต์พุตแบบละเอียด ให้ตรวจสอบสิ่งต่อไปนี้
ตรวจสอบว่าระยะการสร้างโปรเจ็กต์มีสคริปต์การเรียกใช้ Crashlytics ซึ่งจะช่วยให้ Xcode อัปโหลด dSYM ของโปรเจ็กต์ได้เมื่อสร้าง (อ่านการเริ่มต้น Crashlytics เพื่อดูวิธีเพิ่มสคริปต์) หลังจากอัปเดตโปรเจ็กต์แล้ว ให้บังคับให้เกิดความขัดข้องและตรวจสอบว่าข้อขัดข้องปรากฏในแดชบอร์ด Crashlytics
หากเห็นการแจ้งเตือน "ไม่มี dSYM" ในคอนโซล Firebase ให้ตรวจสอบ Xcode เพื่อดูว่าสร้าง dSYM อย่างถูกต้องสําหรับบิลด์หรือไม่
หาก Xcode สร้าง dSYM อย่างถูกต้องแต่คุณยังคงเห็น dSYM ที่หายไป แสดงว่าเครื่องมือเรียกใช้สคริปต์อาจค้างขณะอัปโหลด dSYM ในกรณีนี้ ให้ลองทำตามขั้นตอนต่อไปนี้ทีละข้อ
ตรวจสอบว่าคุณใช้ Crashlytics เวอร์ชันล่าสุดอยู่
อัปโหลดไฟล์ dSYM ที่ขาดหายไปด้วยตนเองโดยทำดังนี้
- ตัวเลือกที่ 1: ใช้ตัวเลือก "ลากและวาง" ที่ใช้คอนโซลในแท็บ dSYM เพื่ออัปโหลดไฟล์ ZIP ที่มีไฟล์ dSYM ที่ขาดหายไป
- ตัวเลือกที่ 2: ใช้สคริปต์
upload-symbols
เพื่ออัปโหลดไฟล์ dSYM ที่ขาดหายไปสำหรับ UUID ที่ระบุในแท็บ dSYM
หากยังคงเห็น dSYM ที่หายไปหรืออัปโหลดไม่สำเร็จ ให้ติดต่อทีมสนับสนุน Firebase และอย่าลืมแนบบันทึกด้วย
มีการแทนที่ข้อขัดข้องด้วยสัญลักษณ์อย่างไม่ถูกต้อง
หากสแต็กเทรซดูเหมือนจะได้รับการแทนที่ด้วยสัญลักษณ์ไม่ดี ให้ตรวจสอบสิ่งต่อไปนี้
หากเฟรมจากไลบรารีของแอปไม่มีการอ้างอิงถึงโค้ดของแอป ให้ตรวจสอบว่าไม่ได้ตั้งค่า
เป็น Flag การคอมไพล์-fomit-frame-pointer
หากเห็นเฟรม
(Missing)
หลายเฟรมสำหรับไลบรารีของแอป ให้ตรวจสอบว่ามี dSYM ที่ไม่บังคับซึ่งระบุว่าขาดหายไป (สำหรับเวอร์ชันแอปที่ได้รับผลกระทบ) ในCrashlytics แท็บ dSYM ของคอนโซล Firebase หรือไม่ หากใช่ ให้ทำตามขั้นตอนการแก้ปัญหา "การแจ้งเตือน dSYM ขาดหายไป" ในคําถามที่พบบ่อยเกี่ยวกับ dSYM ที่ขาดหายไป/ไม่ได้อัปโหลดในหน้านี้ โปรดทราบว่าการอัปโหลด dSYM เหล่านี้จะไม่แทนที่ข้อขัดข้องที่เกิดขึ้นแล้ว แต่จะช่วยในการแทนที่ข้อขัดข้องในอนาคต
ใครดู เขียน และลบหมายเหตุเกี่ยวกับปัญหาได้บ้าง
หมายเหตุช่วยให้สมาชิกโปรเจ็กต์แสดงความคิดเห็นเกี่ยวกับปัญหาที่เฉพาะเจาะจงได้ พร้อมคำถาม สถานะ การอัปเดต ฯลฯ
เมื่อสมาชิกในโปรเจ็กต์โพสต์โน้ต ระบบจะติดป้ายกำกับโน้ตด้วยอีเมลของบัญชี Google อีเมลนี้และโน้ตจะแสดงให้สมาชิกโปรเจ็กต์ทุกคนที่มีสิทธิ์ดูโน้ตเห็น
สิทธิ์เข้าถึงที่จําเป็นในการดู เขียน และลบโน้ตมีดังนี้
สมาชิกโปรเจ็กต์ที่มีบทบาทต่อไปนี้จะดูและลบโน้ตที่มีอยู่ รวมถึงเขียนโน้ตใหม่เกี่ยวกับปัญหาได้
สมาชิกโปรเจ็กต์ที่มีบทบาทต่อไปนี้จะดูหมายเหตุที่โพสต์ในปัญหาได้ แต่จะลบหรือเขียนหมายเหตุไม่ได้
- ผู้ดูโปรเจ็กต์, ผู้ดู Firebase, ผู้ดูคุณภาพ หรือ ผู้ดู Crashlytics
การผสานรวม
แอปใช้ Google Mobile Ads SDK ด้วย แต่ไม่มีการขัดข้อง
หากโปรเจ็กต์ใช้ Crashlytics ร่วมกับ SDK ของ Google Mobile Ads ก็มีความเป็นไปได้ว่าเครื่องมือรายงานข้อขัดข้องจะรบกวนเมื่อลงทะเบียนตัวแฮนเดิลข้อยกเว้น หากต้องการแก้ไขปัญหา ให้ปิดการรายงานข้อขัดข้องใน Mobile Ads SDK โดยเรียกใช้ disableSDKCrashReporting
ชุดข้อมูล BigQuery ของฉันอยู่ที่ไหน
หลังจากลิงก์ Crashlytics กับ BigQuery แล้ว ชุดข้อมูลใหม่ที่สร้างขึ้นจะอยู่ในสหรัฐอเมริกาโดยอัตโนมัติ ไม่ว่าโปรเจ็กต์ Firebase จะอยู่ที่ไหนก็ตาม
การรองรับแพลตฟอร์ม
ฉันจะใช้ Crashlytics สำหรับ macOS หรือ tvOS ได้ไหม
ได้ คุณติดตั้งใช้งาน Crashlytics ในโปรเจ็กต์ macOS และ tvOS ได้ อย่าลืมรวม Firebase SDK เวอร์ชัน 8.9.0 ขึ้นไปสําหรับ Google Analytics เพื่อให้ข้อขัดข้องมีสิทธิ์เข้าถึงเมตริกที่ Google Analytics รวบรวม (ผู้ใช้ที่ไม่มีข้อขัดข้อง เวอร์ชันล่าสุด การแจ้งเตือนความเร็ว และบันทึกเบรดครัมบ์)
ฉันใช้ Crashlytics ในโปรเจ็กต์ Firebase ที่มีแอปหลายแอปในแพลตฟอร์มต่างๆ ของ Apple ได้ไหม
ตอนนี้คุณสามารถรายงานข้อขัดข้องของแอปหลายแอปในโปรเจ็กต์ Firebase เดียวได้ แม้ว่าแอปจะสร้างขึ้นสำหรับแพลตฟอร์มต่างๆ ของ Apple (เช่น iOS, tvOS และ Mac Catalyst) ก็ตาม ก่อนหน้านี้ คุณต้องแยกแอปออกเป็นโปรเจ็กต์ Firebase แต่ละโปรเจ็กต์หากแอปมีรหัสแพ็กเกจเดียวกัน
ปัญหาเดิม
ปัญหาที่กลับคืนสู่เดิมคืออะไร
ปัญหากลับมาเกิดขึ้นอีกเมื่อคุณปิดปัญหาไปแล้วก่อนหน้านี้ แต่Crashlyticsได้รับรายงานใหม่ว่าปัญหาเกิดขึ้นอีกครั้ง Crashlytics จะเปิดปัญหาที่กลับมาอีกครั้งเหล่านี้ขึ้นใหม่โดยอัตโนมัติเพื่อให้คุณแก้ไขปัญหาตามความเหมาะสมสำหรับแอปของคุณ
ต่อไปนี้เป็นตัวอย่างสถานการณ์ที่อธิบายวิธีที่ Crashlytics จัดหมวดหมู่ปัญหาเป็นการถดถอย
- Crashlytics ได้รับรายงานข้อขัดข้องเกี่ยวกับข้อขัดข้อง "A" เป็นครั้งแรก Crashlytics เปิดปัญหาที่เกี่ยวข้องสำหรับการขัดข้องนั้น (ปัญหา "ก")
- คุณแก้ไขข้อบกพร่องนี้อย่างรวดเร็ว ปิดปัญหา "ก" แล้วเผยแพร่แอปเวอร์ชันใหม่
- Crashlytics ได้รับรายงานอีกฉบับเกี่ยวกับปัญหา "ก" หลังจากที่คุณปิดปัญหาแล้ว
- หากรายงานมาจากเวอร์ชันแอปที่ Crashlytics ทราบเมื่อคุณปิดปัญหา (หมายความว่าเวอร์ชันดังกล่าวได้ส่งรายงานข้อขัดข้องสำหรับข้อขัดข้องใดๆ ก็ตาม) Crashlytics จะไม่ถือว่าปัญหาดังกล่าวแย่ลง ปัญหาจะยังคงปิดอยู่
- หากรายงานมาจากเวอร์ชันแอปที่ Crashlyticsไม่ทราบเลยว่ามีเมื่อคุณปิดปัญหา (หมายความว่าเวอร์ชันดังกล่าวไม่เคยส่งรายงานข้อขัดข้องใดๆ เกี่ยวกับข้อขัดข้องใดๆ เลย) Crashlyticsจะถือว่าปัญหากลับมาอีกครั้งและจะเปิดปัญหาดังกล่าวขึ้นมาใหม่
เมื่อปัญหากลับมาเกิดขึ้นอีก เราจะส่งการแจ้งเตือนการตรวจหาการเกิดซ้ำและเพิ่มสัญญาณการเกิดซ้ำลงในปัญหาเพื่อแจ้งให้ทราบว่า Crashlytics ได้เปิดปัญหาขึ้นมาอีกครั้ง หากไม่ต้องการให้ระบบเปิดปัญหาขึ้นมาอีกครั้งเนื่องจากอัลกอริทึมการถดถอย ให้ "ปิดเสียง" ปัญหาแทนการปิด
เหตุใดฉันจึงเห็นปัญหาที่ลดลงในแอปเวอร์ชันเก่า
หากรายงานมาจากแอปเวอร์ชันเก่าที่ไม่เคยส่งรายงานข้อขัดข้องเลยเมื่อคุณปิดปัญหา Crashlytics จะถือว่าปัญหากลับมาอีกครั้งและจะเปิดปัญหานั้นขึ้นมาใหม่
กรณีนี้อาจเกิดขึ้นได้เมื่อคุณแก้ไขข้อบกพร่องและเปิดตัวแอปเวอร์ชันใหม่แล้ว แต่ยังมีผู้ใช้ที่ใช้แอปเวอร์ชันเก่าอยู่ซึ่งไม่มีการแก้ไขข้อบกพร่อง หากเวอร์ชันเก่าเวอร์ชันใดเวอร์ชันหนึ่งไม่เคยส่งรายงานข้อขัดข้องเมื่อคุณปิดปัญหา และผู้ใช้เหล่านั้นเริ่มพบข้อบกพร่อง รายงานข้อขัดข้องเหล่านั้นจะทริกเกอร์ปัญหาที่กลับมาอีกครั้ง
หากไม่ต้องการให้ระบบเปิดปัญหาขึ้นมาอีกครั้งเนื่องจากอัลกอริทึมการถดถอยของเรา ให้ "ปิดเสียง" ปัญหาแทนการปิด