| เลือกแพลตฟอร์ม | iOS+ Android Flutter Unity |
คุณสามารถคลิกปัญหาเพื่อดูรายงานเหตุการณ์โดยละเอียดได้ในแดชบอร์ด DevOps และการมีส่วนร่วม > Crashlytics ของคอนโซล Firebase คุณสามารถปรับแต่งรายงานเหล่านั้นเพื่อช่วยให้เข้าใจสิ่งที่เกิดขึ้นในแอปและสถานการณ์เกี่ยวกับเหตุการณ์ที่รายงานไปยัง Crashlytics ได้ดียิ่งขึ้น
ติดตั้งเครื่องมือในแอปเพื่อบันทึกคีย์ที่กำหนดเอง ข้อความในบันทึกที่กำหนดเอง และตัวระบุผู้ใช้
รายงานข้อยกเว้นไปยัง Crashlytics
รับบันทึกเบรดครัมบ์โดยอัตโนมัติหากแอปใช้ Firebase SDK สำหรับ Google Analytics บันทึกเหล่านี้ช่วยให้คุณเห็นการกระทำของผู้ใช้ที่นำไปสู่เหตุการณ์ที่ Crashlytics รวบรวมไว้ในแอป
ปิดการรายงานข้อขัดข้องอัตโนมัติและเปิดใช้การรายงานแบบเลือกใช้สำหรับผู้ใช้ โปรดทราบว่าโดยค่าเริ่มต้น Crashlytics จะรวบรวมรายงานข้อขัดข้องสำหรับผู้ใช้แอปทั้งหมดโดยอัตโนมัติ
เพิ่มคีย์ที่กำหนดเอง
คีย์ที่กำหนดเองช่วยให้คุณทราบสถานะที่เฉพาะเจาะจงของแอปที่นำไปสู่ข้อขัดข้อง คุณสามารถเชื่อมโยงคู่คีย์-ค่าที่กำหนดเองกับรายงานข้อขัดข้อง จากนั้นใช้คีย์ที่กำหนดเองเพื่อค้นหาและกรองรายงานข้อขัดข้องในแดชบอร์ด DevOps และการมีส่วนร่วม > Crashlytics ของคอนโซล Firebase
คุณสามารถค้นหาปัญหาที่ตรงกับคีย์ที่กำหนดเองได้
เมื่อตรวจสอบปัญหาที่เฉพาะเจาะจงในคอนโซล คุณจะดูคีย์ที่กำหนดเองที่เชื่อมโยงสำหรับแต่ละเหตุการณ์ได้ (แท็บย่อยคีย์) และยังกรองเหตุการณ์ตามคีย์ที่กำหนดเองได้ด้วย (เมนูตัวกรองที่ด้านบนของหน้า)
ใช้เมธอดอินสแตนซ์ setCustomKey เพื่อตั้งค่าคู่คีย์-ค่า โปรดทราบว่า setCustomKey มีการโอเวอร์โหลดสำหรับพารามิเตอร์ value เพื่อยอมรับอาร์กิวเมนต์พื้นฐานหรือ String ตัวอย่างเช่น
Kotlin
val crashlytics = Firebase.crashlytics crashlytics.setCustomKeys { key("my_string_key", "foo") // String value key("my_bool_key", true) // boolean value key("my_double_key", 1.0) // double value key("my_float_key", 1.0f) // float value key("my_int_key", 1) // int value }
Java
FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance(); crashlytics.setCustomKey("my_string_key", "foo" /* string value */); crashlytics.setCustomKey("my_bool_key", true /* boolean value */); crashlytics.setCustomKey("my_double_key", 1.0 /* double value */); crashlytics.setCustomKey("my_float_key", 1.0f /* float value */); crashlytics.setCustomKey("my_int_key", 1 /* int value */);
นอกจากนี้ คุณยังแก้ไขค่าของคีย์ที่มีอยู่ได้โดยเรียกใช้คีย์และตั้งค่าเป็นค่าอื่น เช่น
Kotlin
val crashlytics = Firebase.crashlytics crashlytics.setCustomKeys { key("current_level", 3) key("last_UI_action", "logged_in") }
Java
FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance(); crashlytics.setCustomKey("current_level", 3); crashlytics.setCustomKey("last_UI_action", "logged_in");
เพิ่มคู่คีย์-ค่าหลายรายการพร้อมกันโดยส่งอินสแตนซ์ของ CustomKeysAndValues ไปยังเมธอดอินสแตนซ์ setCustomKeys ดังนี้
Kotlin
สำหรับ Kotlin ฟังก์ชันการทำงานที่มีอยู่จะง่ายกว่าการใช้บิลเดอร์ CustomKeysAndValues
crashlytics.setCustomKeys { key("str_key", "hello") key("bool_key", true) key("int_key", 1) key("long_key", 1L) key("float_key", 1.0f) key("double_key", 1.0) }
Java
CustomKeysAndValues keysAndValues = new CustomKeysAndValues.Builder() .putString("string key", "string value") .putString("string key 2", "string value 2") .putBoolean("boolean key", True) .putBoolean("boolean key 2", False) .putFloat("float key", 1.01) .putFloat("float key 2", 2.02) .build(); FirebaseCrashlytics.getInstance().setCustomKeys(keysAndValues);
เพิ่มข้อความในบันทึกที่กำหนดเอง
หากต้องการดูบริบทเพิ่มเติมเกี่ยวกับเหตุการณ์ที่นำไปสู่ข้อขัดข้อง คุณสามารถเพิ่มบันทึก Crashlytics ที่กำหนดเองลงในแอปได้ Crashlytics จะเชื่อมโยงบันทึกกับข้อมูลข้อขัดข้องและแสดงในแท็บบันทึกเมื่อคุณดูรายละเอียดของปัญหา (ดูปัญหาทั้งหมดในแดชบอร์ดDevOps และการมีส่วนร่วม > Crashlytics ของคอนโซล Firebase)
ใช้ log เพื่อช่วยระบุปัญหา เช่น
Kotlin
Firebase.crashlytics.log("message")
Java
FirebaseCrashlytics.getInstance().log("message");
ตั้งค่าตัวระบุผู้ใช้
ในการวินิจฉัยปัญหา การทราบว่าผู้ใช้รายใดพบข้อขัดข้องที่ระบุมักจะเป็นประโยชน์ Crashlytics มีวิธีระบุผู้ใช้โดยไม่ระบุตัวตนในรายงานข้อขัดข้อง
หากต้องการเพิ่มรหัสผู้ใช้ลงในรายงาน ให้กำหนดตัวระบุที่ไม่ซ้ำกันให้แก่ผู้ใช้แต่ละรายในรูปแบบของหมายเลขประจำตัว โทเค็น หรือค่าแฮช ดังนี้
Kotlin
Firebase.crashlytics.setUserId("user123456789")
Java
FirebaseCrashlytics.getInstance().setUserId("user123456789");
หากต้องการล้างตัวระบุผู้ใช้หลังจากตั้งค่าแล้ว ให้รีเซ็ตค่าเป็นสตริงว่าง การล้างตัวระบุผู้ใช้จะไม่นำระเบียน Crashlytics ที่มีอยู่ออก หากต้องการลบบันทึกที่เชื่อมโยงกับรหัสผู้ใช้ โปรดติดต่อทีมสนับสนุนของ Firebase
(Android NDK เท่านั้น) เพิ่มข้อมูลเมตาลงในรายงานข้อขัดข้องของ NDK
คุณสามารถเลือกใส่ส่วนหัว crashlytics.h ในโค้ด C++ เพื่อเพิ่มข้อมูลเมตาลงในรายงานข้อขัดข้องของ NDK เช่น คีย์ที่กำหนดเอง บันทึกที่กำหนดเอง ตัวระบุผู้ใช้ ตัวเลือกทั้งหมดนี้มีคำอธิบายอยู่ในหน้านี้ด้านบน
crashlytics.h พร้อมใช้งานเป็นไลบรารี C++ แบบส่วนหัวเท่านั้นในที่เก็บ GitHub ของ Firebase Android SDK
อ่านความคิดเห็นในไฟล์ส่วนหัวเพื่อดูวิธีการใช้ NDK C++ API
รวมรายงาน GWP-ASan เพื่อแก้ไขข้อบกพร่องของปัญหาความเสียหายของหน่วยความจำ
Crashlytics ช่วยคุณแก้ไขข้อบกพร่องของข้อขัดข้องที่เกิดจากข้อผิดพลาดด้านหน่วยความจำของระบบได้โดยการรวบรวมรายงาน GWP-ASan ข้อผิดพลาดที่เกี่ยวข้องกับหน่วยความจำเหล่านี้อาจเชื่อมโยงกับความเสียหายของหน่วยความจำภายในแอป ซึ่งเป็นสาเหตุหลักของช่องโหว่ด้านความปลอดภัยของแอป
ในแดชบอร์ด DevOps และการมีส่วนร่วม > Crashlytics ของคอนโซล Firebase คุณสามารถดำเนินการต่อไปนี้กับข้อมูลนี้ได้
คุณดูข้อมูลนี้ได้ในแท็บ "สแต็กเทรซของหน่วยความจำ" ใหม่เมื่อคลิกรายละเอียดของปัญหา
คุณสามารถใช้สัญญาณและตัวกรอง "รายงาน GWP-ASan" ใหม่เพื่อดูปัญหาทั้งหมดเกี่ยวกับข้อมูลนี้ได้อย่างรวดเร็ว
คุณจะได้รับรายงานหน่วยความจำ GWP-ASan หากเปิดใช้ GWP-ASan อย่างชัดแจ้งในแอปและใช้ SDK Crashlytics สำหรับ NDK v18.3.6 ขึ้นไป (Firebase BoM v31.3.0 ขึ้นไป) คุณสามารถทดสอบการตั้งค่า GWP-ASan โดยใช้โค้ดแบบเนทีฟตัวอย่างในเอกสารประกอบของ Android
รายงานข้อยกเว้นที่ไม่ร้ายแรง
นอกเหนือจากการรายงานข้อขัดข้องของแอปโดยอัตโนมัติแล้ว Crashlytics ยังช่วยให้คุณบันทึกข้อยกเว้นที่ไม่ร้ายแรงและส่งให้คุณในครั้งถัดไปที่แอปเปิดขึ้น
ใช้เมธอด recordException เพื่อบันทึกข้อยกเว้นที่ไม่ร้ายแรงในบล็อก catch ของแอป เช่น
Kotlin
try { methodThatThrows() } catch (e: Exception) { Firebase.crashlytics.recordException(e) // handle your exception here }
Java
try { methodThatThrows(); } catch (Exception e) { FirebaseCrashlytics.getInstance().recordException(e); // handle your exception here }
นอกจากนี้ คุณยังแนบคีย์ที่กำหนดเองกับข้อยกเว้นที่ไม่ร้ายแรงที่เฉพาะเจาะจงได้ด้วย เช่น
Kotlin
try { methodThatThrows() } catch (e: Exception) { Firebase.crashlytics.recordException(e) { key("string key", "string value") key("boolean key", true) key("float key", Float.MAX_VALUE) } // handle your exception here }
Java
try { methodThatThrows(); } catch (Exception e) { CustomKeysAndValues keysAndValues = new CustomKeysAndValues.Builder() .putString("string key", "string value") .putBoolean("boolean key", true) .putFloat("float key", Float.MAX_VALUE) .build(); FirebaseCrashlytics.getInstance().recordException(e, keysAndValues); // handle your exception here }
ข้อยกเว้นที่บันทึกไว้ทั้งหมดจะปรากฏเป็นปัญหาที่ไม่ร้ายแรงในแดชบอร์ด DevOps และการมีส่วนร่วม > Crashlytics ของคอนโซล Firebase ข้อมูลสรุปปัญหาประกอบด้วยข้อมูลสถานะทั้งหมดที่คุณมักจะได้รับจากข้อขัดข้อง พร้อมรายละเอียดตามเวอร์ชัน Android และอุปกรณ์ฮาร์ดแวร์
Crashlytics ประมวลผลข้อยกเว้นในชุดข้อความเบื้องหลังเฉพาะเพื่อลดผลกระทบด้านประสิทธิภาพต่อแอปของคุณให้น้อยที่สุด หากต้องการลดการจราจรของข้อมูลในเครือข่ายของผู้ใช้ Crashlytics จะจัดกลุ่มข้อยกเว้นที่บันทึกไว้เข้าด้วยกันและส่งข้อยกเว้นเหล่านั้นในครั้งถัดไปที่แอปเปิดขึ้น
รับบันทึกเบรดครัมบ์
บันทึกเบรดครัมบ์ช่วยให้คุณเข้าใจการโต้ตอบของผู้ใช้กับแอปได้ดียิ่งขึ้น ซึ่งนำไปสู่เหตุการณ์ข้อขัดข้อง ข้อผิดพลาดที่ไม่ร้ายแรง หรือ ANR บันทึกเหล่านี้จะเป็นประโยชน์เมื่อพยายามจำลองและแก้ไขข้อบกพร่องของปัญหา
บันทึกเบรดครัมบ์ทำงานด้วย Google Analytics ดังนั้นหากต้องการรับบันทึกเบรดครัมบ์ คุณต้องเปิดใช้ Google Analytics สำหรับโปรเจ็กต์ Firebase และเพิ่ม Firebase SDK สำหรับ Google Analytics ลงในแอป เมื่อเป็นไปตามข้อกำหนดเหล่านี้แล้ว บันทึกเบรดครัมบ์จะรวมอยู่ในข้อมูลของเหตุการณ์โดยอัตโนมัติภายในแท็บบันทึกเมื่อคุณดูรายละเอียดของปัญหา (ดูปัญหาทั้งหมดในแดชบอร์ดDevOps และการมีส่วนร่วม > Crashlytics ของคอนโซล Firebase)
SDK ของ Analytics จะบันทึกเหตุการณ์ screen_view โดยอัตโนมัติ ซึ่งช่วยให้บันทึกเบรดครัมบ์แสดงรายการหน้าจอที่ดูก่อนเกิดเหตุการณ์ข้อขัดข้อง ข้อผิดพลาดที่ไม่ร้ายแรง หรือ ANR บันทึกเบรดครัมบ์ screen_view มีพารามิเตอร์ firebase_screen_class
นอกจากนี้ บันทึกเบรดครัมบ์ยังสร้างขึ้นจากเหตุการณ์ที่กำหนดเองที่คุณบันทึกด้วยตนเองภายในเซสชันของผู้ใช้ รวมถึงข้อมูลพารามิเตอร์ของเหตุการณ์ด้วย ข้อมูลนี้จะช่วยแสดงชุดการดำเนินการของผู้ใช้ที่นำไปสู่เหตุการณ์ข้อขัดข้อง เหตุการณ์ที่ไม่ร้ายแรง หรือเหตุการณ์ ANR
โปรดทราบว่าคุณสามารถควบคุมการรวบรวมและการใช้ข้อมูล Google Analytics ซึ่งรวมถึงข้อมูลที่สร้างบันทึกเบรดครัมบ์ได้
เปิดใช้การรายงานการเลือกใช้
โดยค่าเริ่มต้น Crashlytics จะรวบรวมรายงานข้อขัดข้องสำหรับผู้ใช้แอปทั้งหมดโดยอัตโนมัติ หากต้องการให้ผู้ใช้ควบคุมข้อมูลที่ส่งได้มากขึ้น คุณสามารถเปิดใช้การรายงานแบบเลือกรับโดยปิดใช้การรายงานอัตโนมัติ และส่งข้อมูลไปยัง Crashlytics เมื่อคุณเลือกในโค้ดเท่านั้น
ในบล็อก
applicationของไฟล์AndroidManifest.xmlให้เพิ่มแท็กmeta-dataเพื่อปิดการรวบรวมอัตโนมัติ<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />เปิดใช้การเก็บรวบรวมข้อมูลสำหรับผู้ใช้บางรายโดยเรียกใช้การลบล้างการเก็บรวบรวมข้อมูล Crashlytics ขณะรันไทม์ ค่าการลบล้างจะคงอยู่ตลอดการเปิดแอปครั้งต่อๆ ไปทั้งหมด เพื่อให้ Crashlytics รวบรวมรายงานสำหรับผู้ใช้รายนั้นได้โดยอัตโนมัติ
Kotlin
Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)
Java
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);
หากผู้ใช้เลือกไม่ให้เก็บรวบรวมข้อมูลในภายหลัง คุณสามารถส่ง
falseเป็นค่าลบล้าง ซึ่งจะมีผลในครั้งถัดไปที่ผู้ใช้เปิดแอป และจะยังคงมีผลในการเปิดแอปครั้งต่อๆ ไปทั้งหมดสำหรับผู้ใช้รายนั้น
จัดการข้อมูล Crash Insights
Crash Insights ช่วยคุณแก้ปัญหาโดยการเปรียบเทียบสแต็กเทรซที่ลบข้อมูลระบุตัวบุคคลของคุณกับสแต็กเทรซจากแอป Firebase อื่นๆ และแจ้งให้คุณทราบว่าปัญหาของคุณเป็นส่วนหนึ่งของแนวโน้มที่ใหญ่ขึ้นหรือไม่ สำหรับปัญหาหลายๆ อย่าง Crash Insights ยังมีแหล่งข้อมูลที่จะช่วยคุณแก้ไขข้อบกพร่องของข้อขัดข้องด้วย
Crash Insights ใช้ข้อมูลข้อขัดข้องที่รวบรวมไว้เพื่อระบุแนวโน้มความเสถียรที่พบบ่อย หากไม่ต้องการแชร์ข้อมูลของแอป คุณสามารถเลือกไม่ใช้ข้อมูลเชิงลึกเกี่ยวกับข้อขัดข้องได้จากเมนูข้อมูลเชิงลึกเกี่ยวกับข้อขัดข้องที่ด้านบนของรายการปัญหาในแดชบอร์ดDevOps และการมีส่วนร่วม > Crashlytics ของคอนโซล Firebase
ขั้นตอนถัดไป
- ส่งออกข้อมูลไปยัง BigQuery หรือ Cloud Logging เพื่อใช้การวิเคราะห์และฟีเจอร์ขั้นสูง เช่น การค้นหาข้อมูล การสร้างแดชบอร์ดที่กำหนดเอง และการตั้งค่าการแจ้งเตือนที่กำหนดเอง