หน้านี้ให้ความช่วยเหลือในการแก้ปัญหาและคำตอบสำหรับคำถามที่พบบ่อยเกี่ยวกับการใช้ Crashlytics หากคุณไม่พบสิ่งที่คุณกำลังมองหาหรือต้องการความช่วยเหลือเพิ่มเติม โปรดติดต่อ ฝ่ายสนับสนุนของ Firebase
การแก้ไขปัญหาทั่วไป/คำถามที่พบบ่อย
คุณอาจสังเกตเห็นรูปแบบที่แตกต่างกัน 2 รูปแบบสำหรับปัญหาที่แสดงอยู่ในตาราง ปัญหา ในคอนโซล Firebase และคุณอาจสังเกตเห็นคุณลักษณะที่เรียกว่า "ตัวแปร" ภายในปัญหาบางอย่างของคุณ นี่คือเหตุผล!
ในช่วงต้นปี 2023 เราได้เปิดตัวเครื่องมือวิเคราะห์ที่ได้รับการปรับปรุงสำหรับการจัดกลุ่มเหตุการณ์ตลอดจนการออกแบบที่อัปเดตและฟีเจอร์ขั้นสูงบางอย่างสำหรับปัญหาใหม่ (เช่น ตัวแปร!) ตรวจสอบ โพสต์บนบล็อก ล่าสุดของเราสำหรับรายละเอียดทั้งหมด แต่คุณสามารถอ่านไฮไลท์ด้านล่างได้
Crashlytics วิเคราะห์เหตุการณ์ทั้งหมดจากแอปของคุณ (เช่น ข้อขัดข้อง เหตุการณ์ที่ไม่ร้ายแรง และ ANR) และสร้างกลุ่มเหตุการณ์ที่เรียกว่า ปัญหา กิจกรรมทั้งหมดในปัญหามีจุดที่ล้มเหลวร่วมกัน
หากต้องการจัดกลุ่มเหตุการณ์ออกเป็นประเด็นเหล่านี้ เครื่องมือวิเคราะห์ที่ได้รับการปรับปรุงจะพิจารณาหลายแง่มุมของเหตุการณ์ รวมถึงเฟรมในการติดตามสแต็ก ข้อความข้อยกเว้น รหัสข้อผิดพลาด และแพลตฟอร์มหรือลักษณะประเภทข้อผิดพลาดอื่นๆ
อย่างไรก็ตาม ภายในกลุ่มของเหตุการณ์นี้ การติดตามสแต็กที่นำไปสู่ความล้มเหลวอาจแตกต่างกัน การติดตามสแต็กที่แตกต่างกันอาจหมายถึงสาเหตุที่แท้จริงที่แตกต่างกัน เพื่อแสดงถึงความแตกต่างที่เป็นไปได้ในประเด็นหนึ่งๆ ตอนนี้เราได้สร้าง รูปแบบที่แตกต่างกัน ภายในประเด็น - แต่ละรูปแบบคือกลุ่มย่อยของเหตุการณ์ในปัญหาที่มีจุดล้มเหลวเหมือนกัน และ มีการติดตามสแต็กที่คล้ายกัน ด้วยตัวแปร คุณสามารถแก้ไขข้อบกพร่องการติดตามสแต็กที่พบบ่อยที่สุดภายในปัญหา และพิจารณาว่าสาเหตุหลักที่แตกต่างกันนำไปสู่ความล้มเหลวหรือไม่
นี่คือสิ่งที่คุณจะได้รับจากการปรับปรุงเหล่านี้:
ข้อมูลเมตาที่ปรับปรุงใหม่แสดงอยู่ในแถวปัญหา
ตอนนี้คุณเข้าใจและคัดแยกปัญหาในแอปของคุณได้ง่ายขึ้นแล้วปัญหาซ้ำซ้อนน้อยลง
การเปลี่ยนแปลงหมายเลขบรรทัดไม่ส่งผลให้เกิดปัญหาใหม่การแก้ไขจุดบกพร่องที่ซับซ้อนได้ง่ายขึ้นด้วยสาเหตุหลายประการ
ใช้ตัวแปรเพื่อแก้ไขข้อบกพร่องการติดตามสแต็กที่พบบ่อยที่สุดภายในปัญหาการแจ้งเตือนและสัญญาณที่มีความหมายมากขึ้น
ปัญหาใหม่แสดงถึงจุดบกพร่องใหม่จริงๆการค้นหาที่ทรงพลังยิ่งขึ้น
แต่ละประเด็นมีข้อมูลเมตาที่สามารถค้นหาได้มากขึ้น เช่น ประเภทข้อยกเว้นและชื่อแพ็คเกจ
ต่อไปนี้คือวิธีการเปิดตัวการปรับปรุงเหล่านี้:
เมื่อเราได้รับกิจกรรมใหม่จากแอปของคุณ เราจะตรวจสอบว่ากิจกรรมเหล่านั้นตรงกับปัญหาที่มีอยู่หรือไม่
หากไม่มีที่ตรงกัน เราจะใช้อัลกอริธึมการจัดกลุ่มเหตุการณ์ที่ชาญฉลาดยิ่งขึ้นกับกิจกรรมโดยอัตโนมัติ และสร้างปัญหาใหม่ด้วยการออกแบบเมทาดาทาที่ปรับปรุงใหม่
นี่เป็นการอัปเดตครั้งใหญ่ครั้งแรกที่เราทำกับการจัดกลุ่มกิจกรรมของเรา หากคุณมีข้อเสนอแนะหรือพบปัญหาใด ๆ โปรดแจ้งให้เราทราบโดย การยื่นรายงาน
หากคุณไม่เห็นตัววัดที่ปราศจากข้อขัดข้อง (เช่น ผู้ใช้และเซสชันที่ปราศจากข้อขัดข้อง) และ/หรือการแจ้งเตือนความเร็ว ตรวจสอบให้แน่ใจว่าคุณใช้Crashlytics SDK v18.6.0+ (หรือ Firebase BoM v32.6.0+)
หากคุณไม่เห็น บันทึกเบรดครัมบ์ เราขอแนะนำให้ตรวจสอบการกำหนดค่าแอปของคุณสำหรับ Google Analytics ตรวจสอบให้แน่ใจว่าคุณมีคุณสมบัติตรงตามข้อกำหนดต่อไปนี้:
คุณได้ เปิดใช้งาน Google Analytics ในโปรเจ็กต์ Firebase ของคุณ
คุณได้เปิดใช้งาน การแบ่งปันข้อมูล สำหรับ Google Analytics เรียนรู้เพิ่มเติมเกี่ยวกับการตั้งค่านี้ใน จัดการการตั้งค่าการเปิดเผยข้อมูล Analytics ของคุณ
คุณได้ได้เพิ่ม Firebase SDK สำหรับ Google Analyticsลงในแอปของคุณ ต้องเพิ่ม SDK นี้ เพิ่มเติม จาก Crashlytics SDK
คุณกำลังใช้เวอร์ชัน Firebase SDK ล่าสุดสำหรับผลิตภัณฑ์ทั้งหมดที่คุณใช้ในแอปของคุณ
ตรวจสอบเป็นพิเศษว่าคุณใช้ Firebase SDK เวอร์ชันต่อไปนี้สำหรับ Google Analytics เป็นอย่างน้อย :
Android — เวอร์ชัน 17.2.3+ (BoM v24.7.1+)
Crashlytics รองรับการรายงาน ANR สำหรับแอป Android จากอุปกรณ์ที่ใช้ Android 11 ขึ้นไป API พื้นฐานที่เราใช้เพื่อรวบรวม ANR ( getHistoricalProcessExitReasons ) มีความน่าเชื่อถือมากกว่า SIGQUIT หรือแนวทางที่อิงตามโปรแกรมเฝ้าระวัง API นี้ใช้ได้เฉพาะในอุปกรณ์ Android 11 ขึ้นไปเท่านั้น
หาก ANR บางส่วนของคุณไม่มี BuildId
ให้แก้ไขปัญหาดังนี้:
ตรวจสอบว่าคุณใช้ Crashlytics Android SDK และปลั๊กอิน Crashlytics Gradle เวอร์ชันล่าสุด
หากคุณไม่มี
BuildId
สำหรับ Android 11 และ ANR ของ Android 12 บางรุ่น อาจเป็นไปได้ว่าคุณกำลังใช้ SDK, ปลั๊กอิน Gradle ที่ล้าสมัย หรือทั้งสองอย่าง หากต้องการรวบรวมBuildId
สำหรับ ANR เหล่านี้อย่างถูกต้อง คุณต้องใช้เวอร์ชันต่อไปนี้:- Crashlytics Android SDK เวอร์ชัน 18.3.5+ (Firebase BoM เวอร์ชัน 31.2.2+)
- ปลั๊กอิน Crashlytics Gradle v2.9.4+
ตรวจสอบว่าคุณใช้ตำแหน่งที่ไม่ได้มาตรฐานสำหรับไลบรารีที่แชร์ของคุณหรือไม่
หากคุณขาดแค่
BuildId
สำหรับไลบรารีที่แชร์ของแอปของคุณ อาจเป็นไปได้ว่าคุณไม่ได้ใช้ตำแหน่งมาตรฐานซึ่งเป็นตำแหน่งเริ่มต้นสำหรับไลบรารีที่แชร์ หากเป็นกรณีนี้ Crashlytics อาจไม่สามารถระบุตำแหน่งBuildId
ที่เกี่ยวข้องได้ เราขอแนะนำให้คุณพิจารณาใช้ตำแหน่งมาตรฐานสำหรับไลบรารีที่แบ่งใช้ตรวจสอบให้แน่ใจว่าคุณไม่ได้ลอก
BuildId
ในระหว่างกระบวนการสร้างโปรดทราบว่าเคล็ดลับการแก้ปัญหาต่อไปนี้ใช้ได้กับทั้ง ANR และข้อขัดข้องดั้งเดิม
ตรวจสอบว่า
BuildId
มีอยู่หรือไม่โดยการรันreadelf -n
บนไบนารีของคุณ หากไม่มีBuildId
ให้เพิ่ม-Wl,--build-id
ให้กับแฟล็กสำหรับระบบบิลด์ของคุณตรวจสอบว่าคุณไม่ได้ลอก
BuildId
โดยไม่ได้ตั้งใจเพื่อลดขนาด APK ของคุณหากคุณเก็บไลบรารีเวอร์ชันที่แยกและไม่ได้แยกออก ตรวจสอบให้แน่ใจว่าชี้ไปที่เวอร์ชันที่ถูกต้องในโค้ดของคุณ
จำนวน ANR ระหว่าง Google Play และ Crashlytics อาจไม่ตรงกัน สิ่งนี้คาดว่าจะเกิดขึ้นเนื่องจากความแตกต่างในกลไกการรวบรวมและการรายงานข้อมูล ANR Crashlytics จะรายงาน ANR เมื่อแอปเริ่มทำงานครั้งถัดไป ในขณะที่ Android Vitals จะส่งข้อมูล ANR หลังจาก ANR เกิดขึ้น
นอกจากนี้ Crashlytics จะแสดงเฉพาะ ANR ที่เกิดขึ้นในอุปกรณ์ที่ใช้ Android 11 ขึ้นไป เทียบกับ Google Play ที่แสดง ANR จากอุปกรณ์ที่ใช้บริการ Google Play และยอมรับความยินยอมในการรวบรวมข้อมูล
ห่วงโซ่เครื่องมือ LLVM และ GNU มีค่าเริ่มต้นและการจัดการที่แตกต่างกันสำหรับส่วนอ่านอย่างเดียวของไบนารีของแอปของคุณ ซึ่งอาจสร้างการติดตามสแต็กที่ไม่สอดคล้องกันในคอนโซล Firebase เพื่อบรรเทาปัญหานี้ ให้เพิ่มแฟล็กตัวเชื่อมโยงต่อไปนี้ในกระบวนการสร้างของคุณ:
หากคุณใช้
lld
linker จาก LLVM toolchain ให้เพิ่ม:-Wl,--no-rosegment
หากคุณใช้
ld.gold
linker จาก GNU toolchain ให้เพิ่ม:-Wl,--rosegment
หากคุณยังคงเห็นความไม่สอดคล้องกันของการติดตามสแต็ก (หรือหากไม่มีแฟล็กใดที่เกี่ยวข้องกับ toolchain ของคุณ) ให้ลองเพิ่มสิ่งต่อไปนี้ในกระบวนการสร้างของคุณแทน:
-fno-omit-frame-pointer
ปลั๊กอิน Crashlytics รวม ตัวสร้างไฟล์สัญลักษณ์ Breakpad แบบกำหนดเองไว้ด้วยกัน หากคุณต้องการใช้ไบนารีของคุณเองเพื่อสร้างไฟล์สัญลักษณ์ Breakpad (เช่น หากคุณต้องการสร้างไฟล์ปฏิบัติการดั้งเดิมทั้งหมดในเชนการสร้างของคุณจากแหล่งที่มา) ให้ใช้คุณสมบัติส่วนขยาย symbolGeneratorBinary
ที่เป็นตัวเลือก เพื่อระบุพาธไปยังไฟล์ปฏิบัติการ
คุณสามารถระบุเส้นทางไปยังไบนารีตัวสร้างไฟล์สัญลักษณ์ Breakpad ได้ด้วยวิธีใดวิธีหนึ่งจากสองวิธี:
ตัวเลือกที่ 1 : ระบุเส้นทางผ่านส่วนขยาย
firebaseCrashlytics
ในไฟล์build.gradle
ของคุณเพิ่มสิ่งต่อไปนี้ลงในไฟล์
build.gradle
ระดับแอปของคุณ:android { // ... buildTypes { // ... release { // ... firebaseCrashlytics { // existing; required for either symbol file generator nativeSymbolUploadEnabled true // Add this optional new block to specify the path to the executable symbolGenerator { breakpad { binary file("/PATH/TO/BREAKPAD/DUMP_SYMS") } } } } }
ตัวเลือกที่ 2 : ระบุเส้นทางผ่านบรรทัดคุณสมบัติในไฟล์คุณสมบัติ Gradle ของคุณ
คุณสามารถใช้คุณสมบัติ
com.google.firebase.crashlytics.symbolGeneratorBinary
สัญลักษณ์GeneratorBinary เพื่อระบุเส้นทางไปยังไฟล์ปฏิบัติการได้คุณสามารถอัปเดตไฟล์คุณสมบัติ Gradle ด้วยตนเองหรืออัปเดตไฟล์ผ่านทางบรรทัดคำสั่ง ตัวอย่างเช่น หากต้องการระบุเส้นทางผ่านบรรทัดคำสั่ง ให้ใช้คำสั่งดังต่อไปนี้:
./gradlew -Pcom.google.firebase.crashlytics.symbolGenerator=breakpad \ -Pcom.google.firebase.crashlytics.symbolGeneratorBinary=/PATH/TO/BREAKPAD/DUMP_SYMS \ app:assembleRelease app:uploadCrashlyticsSymbolFileRelease
หากคุณเห็นข้อยกเว้นต่อไปนี้ เป็นไปได้ว่าคุณกำลังใช้ DexGuard เวอร์ชันที่เข้ากันไม่ได้กับ Firebase Crashlytics SDK:
java.lang.IllegalArgumentException: Transport backend 'cct' is not registered
ข้อยกเว้นนี้จะไม่ทำให้แอปของคุณขัดข้อง แต่ป้องกันไม่ให้ส่งรายงานข้อขัดข้อง วิธีแก้ไขปัญหานี้:
ตรวจสอบให้แน่ใจว่าคุณใช้ DexGuard 8.x รุ่นล่าสุด เวอร์ชันล่าสุดมีกฎที่ Firebase Crashlytics SDK กำหนด
หากคุณไม่ต้องการเปลี่ยนเวอร์ชัน DexGuard ให้ลองเพิ่มบรรทัดต่อไปนี้ลงในกฎการสร้างความสับสน (ในไฟล์กำหนดค่า DexGuard ของคุณ):
-keepresourcexmlelements manifest/application/service/meta-data@value=cct
เมื่อแอปใช้ตัวสร้างความสับสนที่ไม่เปิดเผยนามสกุลไฟล์ Crashlytics จะสร้างแต่ละปัญหาด้วยนามสกุลไฟล์ .java
ตามค่าเริ่มต้น
เพื่อให้ Crashlytics สร้างปัญหาเกี่ยวกับนามสกุลไฟล์ที่ถูกต้อง โปรดตรวจสอบว่าแอปของคุณใช้การตั้งค่าต่อไปนี้
- ใช้ Android Gradle 4.2.0 หรือสูงกว่า
- ใช้ R8 โดยเปิดการทำให้สับสน หากต้องการอัปเดตแอปของคุณเป็น R8 ให้ทำตาม เอกสาร นี้
โปรดทราบว่าหลังจากอัปเดตเป็นการตั้งค่าที่อธิบายไว้ข้างต้น คุณอาจเริ่มเห็นปัญหา .kt
ใหม่ซึ่งซ้ำกับปัญหา .java
ที่มีอยู่ ดู คำถามที่พบบ่อย เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับสถานการณ์นั้น
ตั้งแต่กลางเดือนธันวาคม 2021 Crashlytics ได้ปรับปรุงการรองรับแอปพลิเคชันที่ใช้ Kotlin
จนกระทั่งเมื่อไม่นานมานี้ ตัวสร้างความสับสนที่มีอยู่ไม่ได้เปิดเผยนามสกุลไฟล์ ดังนั้น Crashlytics จึงสร้างแต่ละปัญหาด้วยนามสกุลไฟล์ .java
ตามค่าเริ่มต้น อย่างไรก็ตาม สำหรับ Android Gradle 4.2.0 นั้น R8 รองรับนามสกุลไฟล์
ด้วยการอัปเดตนี้ Crashlytics สามารถระบุได้ว่าแต่ละคลาสที่ใช้ในแอปเขียนด้วย Kotlin และรวมชื่อไฟล์ที่ถูกต้องในลายเซ็นปัญหาหรือไม่ ขณะนี้ข้อขัดข้องได้รับการระบุแหล่งที่มาอย่างถูกต้องจากไฟล์ .kt
(ตามความเหมาะสม) หากแอปของคุณมีการตั้งค่าต่อไปนี้:
- แอปของคุณใช้ Android Gradle 4.2.0 ขึ้นไป
- แอปของคุณใช้ R8 โดยเปิดการสร้างความสับสนไว้
เนื่องจากขณะนี้ข้อขัดข้องใหม่ได้รวมนามสกุลไฟล์ที่ถูกต้องไว้ในลายเซ็นของปัญหาแล้ว คุณอาจพบปัญหา .kt
ใหม่ซึ่งจริงๆ แล้วเป็นเพียงปัญหาที่ซ้ำกับปัญหาที่มีป้ายกำกับ .java
ที่มีอยู่ ในคอนโซล Firebase เราพยายามระบุและสื่อสารกับคุณหากปัญหา .kt
ใหม่เป็นไปได้ว่าซ้ำกับปัญหาที่มีป้ายกำกับ .java
ที่มีอยู่
หมายเหตุช่วยให้สมาชิกโครงการแสดงความคิดเห็นในประเด็นเฉพาะพร้อมคำถาม การอัปเดตสถานะ ฯลฯ
เมื่อสมาชิกโครงการโพสต์บันทึก จะมีป้ายกำกับเป็นอีเมลของบัญชี Google ของตน ที่อยู่อีเมลนี้จะปรากฏพร้อมกับหมายเหตุแก่สมาชิกโครงการทุกคนที่มีสิทธิ์เข้าถึงเพื่อดูบันทึก
ข้อมูลต่อไปนี้จะอธิบายการเข้าถึงที่จำเป็นสำหรับการดู เขียน และลบบันทึกย่อ:
สมาชิกโครงการที่มีบทบาทใดๆ ต่อไปนี้สามารถดูและลบบันทึกย่อที่มีอยู่ และเขียนบันทึกใหม่ในประเด็นได้
สมาชิกโครงการที่มีบทบาทใดๆ ต่อไปนี้สามารถดูบันทึกย่อที่โพสต์ในประเด็นหนึ่งๆ ได้ แต่ไม่สามารถลบหรือเขียนบันทึกได้
- Project Viewer , Firebase Viewer , Quality Viewer หรือ Crashlytics Viewer
ดู ทำความเข้าใจเมตริกที่ปราศจากข้อขัดข้อง
หมายเหตุช่วยให้สมาชิกโครงการแสดงความคิดเห็นในประเด็นเฉพาะพร้อมคำถาม การอัปเดตสถานะ ฯลฯ
เมื่อสมาชิกโครงการโพสต์บันทึก จะมีป้ายกำกับเป็นอีเมลของบัญชี Google ของตน ที่อยู่อีเมลนี้จะปรากฏพร้อมกับหมายเหตุแก่สมาชิกโครงการทุกคนที่มีสิทธิ์เข้าถึงเพื่อดูบันทึก
ข้อมูลต่อไปนี้จะอธิบายการเข้าถึงที่จำเป็นสำหรับการดู เขียน และลบบันทึกย่อ:
สมาชิกโครงการที่มีบทบาทใดๆ ต่อไปนี้สามารถดูและลบบันทึกย่อที่มีอยู่ และเขียนบันทึกใหม่ในประเด็นได้
สมาชิกโครงการที่มีบทบาทใดๆ ต่อไปนี้สามารถดูบันทึกย่อที่โพสต์ในประเด็นหนึ่งๆ ได้ แต่ไม่สามารถลบหรือเขียนบันทึกได้
- Project Viewer , Firebase Viewer , Quality Viewer หรือ Crashlytics Viewer
บูรณาการ
หากโปรเจ็กต์ของคุณใช้ Crashlytics ควบคู่ไปกับ SDK โฆษณาบนอุปกรณ์เคลื่อนที่ของ Google อาจเป็นไปได้ว่าผู้รายงานข้อขัดข้องกำลังรบกวนเมื่อลงทะเบียนเครื่องจัดการข้อยกเว้น หากต้องการแก้ไขปัญหา ให้ปิดการรายงานข้อขัดข้องใน SDK โฆษณาบนมือถือโดยเรียก disableSDKCrashReporting
หลังจากที่คุณลิงก์ Crashlytics กับ BigQuery แล้ว ชุดข้อมูลใหม่ที่คุณสร้างจะอยู่ในสหรัฐอเมริกาโดยอัตโนมัติ ไม่ว่าโปรเจ็กต์ Firebase ของคุณจะอยู่ที่ใดก็ตาม
การสนับสนุนแพลตฟอร์ม
Firebase Crashlytics NDK ไม่รองรับ ARMv5 (armeabi) การสนับสนุน ABI นี้ถูกลบออกตั้งแต่ NDK r17
ปัญหาที่ถดถอย
ปัญหามีการถดถอยเมื่อคุณปิดปัญหาไปก่อนหน้านี้ แต่ Crashlytics ได้รับรายงานใหม่ว่าปัญหาเกิดขึ้นอีกครั้ง Crashlytics จะเปิดปัญหาที่ถดถอยเหล่านี้ขึ้นมาใหม่โดยอัตโนมัติ เพื่อให้คุณจัดการได้อย่างเหมาะสมกับแอปของคุณ
ต่อไปนี้คือตัวอย่างสถานการณ์ที่อธิบายว่า Crashlytics จัดหมวดหมู่ปัญหาเป็นการถดถอยอย่างไร
- เป็นครั้งแรกที่ Crashlytics ได้รับรายงานข้อขัดข้องเกี่ยวกับข้อขัดข้อง "A" Crashlytics เปิดปัญหาที่เกี่ยวข้องกับข้อขัดข้องนั้น (ปัญหา "A")
- คุณแก้ไขข้อบกพร่องนี้ได้อย่างรวดเร็ว ปิดปัญหา "A" จากนั้นจึงเผยแพร่แอปเวอร์ชันใหม่
- Crashlytics ได้รับรายงานอีกฉบับเกี่ยวกับปัญหา "A" หลังจากที่คุณปิดปัญหาแล้ว
- หากรายงานมาจากเวอร์ชันแอปที่ Crashlytics ทราบ เมื่อคุณปิดปัญหา (หมายความว่าเวอร์ชันดังกล่าวได้ส่งรายงานข้อขัดข้องสำหรับข้อขัดข้อง ใดๆ เลย) Crashlytics จะไม่ถือว่าปัญหาดังกล่าวถดถอย ประเด็นนี้จะยังคงปิดอยู่
- หากรายงานมาจากเวอร์ชันแอปที่ Crashlytics ไม่ ทราบ เมื่อคุณปิดปัญหา (หมายความว่าเวอร์ชัน ไม่ เคยส่งรายงาน ข้อ ขัดข้องเกี่ยวกับข้อขัดข้องใดๆ เลย) Crashlytics จะถือว่าปัญหาถดถอยและจะเปิดปัญหาอีกครั้ง .
เมื่อปัญหาถดถอย เราจะส่งการแจ้งเตือนการตรวจจับการถดถอยและเพิ่มสัญญาณการถดถอยให้กับปัญหา เพื่อแจ้งให้คุณทราบว่า Crashlytics ได้เปิดปัญหาขึ้นมาใหม่แล้ว หากคุณไม่ต้องการให้ปัญหาเปิดขึ้นอีกครั้งเนื่องจากอัลกอริทึมการถดถอยของเรา ให้ "ปิดเสียง" ปัญหาแทนการปิด
หากรายงานมาจากแอปเวอร์ชันเก่าที่ไม่เคยส่งรายงานข้อขัดข้องใดๆ เลยเมื่อคุณปิดปัญหา Crashlytics จะถือว่าปัญหาถดถอยแล้วและจะเปิดปัญหาอีกครั้ง
สถานการณ์นี้อาจเกิดขึ้นได้ในสถานการณ์ต่อไปนี้: คุณได้แก้ไขข้อบกพร่องและเปิดตัวแอปเวอร์ชันใหม่แล้ว แต่คุณยังคงมีผู้ใช้ในเวอร์ชันเก่าที่ไม่มีการแก้ไขข้อบกพร่อง หากบังเอิญว่าหนึ่งในเวอร์ชันเก่าเหล่านั้น ไม่ เคยส่งรายงานข้อขัดข้องใดๆ เลยเมื่อคุณปิดปัญหา และผู้ใช้เหล่านั้นเริ่มพบจุดบกพร่อง รายงานข้อขัดข้องเหล่านั้นก็จะกระตุ้นให้เกิดปัญหาถดถอย
หากคุณไม่ต้องการให้ปัญหาเปิดขึ้นอีกครั้งเนื่องจากอัลกอริทึมการถดถอยของเรา ให้ "ปิดเสียง" ปัญหาแทนการปิด