เริ่มต้นใช้งาน Firebase Crashlytics


การเริ่มต้นอย่างรวดเร็วนี้อธิบายวิธีตั้งค่า Firebase Crashlytics ในแอป ด้วยปลั๊กอิน Crashlytics Flutter เพื่อให้คุณได้รับรายงานข้อขัดข้องที่ครอบคลุม ในคอนโซล Firebase

การตั้งค่า Crashlytics ต้องใช้ทั้งเครื่องมือบรรทัดคำสั่งและ IDE หากต้องการตั้งค่าให้เสร็จสมบูรณ์ คุณจะต้องบังคับให้ระบบยกเว้นการทดสอบเพื่อส่ง รายงานข้อขัดข้องแรกไปยัง Firebase

ก่อนเริ่มต้น

  1. หากยังไม่ได้ดำเนินการ ให้กำหนดค่าและเริ่มต้น Firebase ในโปรเจ็กต์ Flutter

  2. แนะนํา: หากต้องการรับบันทึกเส้นทางโดยอัตโนมัติ เพื่อทําความเข้าใจการกระทําของผู้ใช้ที่นําไปสู่เหตุการณ์ข้อขัดข้อง ข้อผิดพลาดที่ไม่ร้ายแรง หรือ ANR คุณต้องเปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase

    • หากโปรเจ็กต์ Firebase ที่มีอยู่ไม่ได้เปิดใช้ Google Analytics คุณสามารถเปิดใช้ Google Analytics ได้จาก แท็บการผสานรวมของ > การตั้งค่าโปรเจ็กต์ ในคอนโซล Firebase

    • หากจะสร้างโปรเจ็กต์ Firebase ใหม่ ให้เปิดใช้ Google Analytics ในระหว่างขั้นตอนการสร้างโปรเจ็กต์

    โปรดทราบว่าบันทึกเส้นทางจะใช้ได้กับแพลตฟอร์ม Android และ Apple ทั้งหมดที่ Crashlytics รองรับ (ยกเว้น watchOS)

ขั้นตอนที่ 1: เพิ่ม Crashlytics ลงในโปรเจ็กต์ Flutter

  1. จากรูทของโปรเจ็กต์ Flutter ให้เรียกใช้คำสั่งต่อไปนี้เพื่อติดตั้งปลั๊กอิน Flutter สำหรับ Crashlytics

    หากต้องการใช้ประโยชน์จากบันทึกเส้นทาง ให้เพิ่มปลั๊กอิน Flutter สําหรับ Google Analytics ลงในแอปด้วย ตรวจสอบว่าเปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase แล้ว

    flutter pub add firebase_crashlytics && flutter pub add firebase_analytics
    
  2. จากไดเรกทอรีรากของโปรเจ็กต์ Flutter ให้เรียกใช้คำสั่งต่อไปนี้

    flutterfire configure
    

    การเรียกใช้คำสั่งนี้จะช่วยให้มั่นใจได้ว่าการกำหนดค่า Firebase ของแอป Flutter เป็นเวอร์ชันล่าสุด และสำหรับ Android จะเพิ่มปลั๊กอิน CrashlyticsGradle ที่จำเป็นลงในแอป

  3. เมื่อดำเนินการเสร็จแล้ว ให้สร้างโปรเจ็กต์ Flutter ใหม่โดยทำดังนี้

    flutter run
    
  4. (ไม่บังคับ) หากโปรเจ็กต์ Flutter ใช้แฟล็ก --split-debug-info (และอาจใช้แฟล็ก --obfuscate ด้วย) คุณจะต้องทำตามขั้นตอนเพิ่มเติม เพื่อแสดง Stack Trace ที่อ่านได้สำหรับแอป

    • แพลตฟอร์ม Apple: ตรวจสอบว่าโปรเจ็กต์ใช้การกำหนดค่าเวอร์ชันที่แนะนำ (Flutter 3.12.0 ขึ้นไปและ Crashlytics ปลั๊กอิน Flutter 3.3.4 ขึ้นไป) เพื่อให้โปรเจ็กต์ สร้างและอัปโหลดสัญลักษณ์ Flutter (ไฟล์ dSYM) ไปยัง Crashlytics ได้โดยอัตโนมัติ

    • Android: ใช้ Firebase CLI (v.11.9.0 ขึ้นไป) เพื่ออัปโหลด สัญลักษณ์การแก้ไขข้อบกพร่องของ Flutter คุณต้องอัปโหลดสัญลักษณ์การแก้ไขข้อบกพร่องก่อน รายงานข้อขัดข้องจากการสร้างโค้ดที่ปรับให้ยากต่อการอ่าน (Obfuscate)

      จากไดเรกทอรีรากของโปรเจ็กต์ Flutter ให้เรียกใช้คำสั่งต่อไปนี้

      firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
      • FIREBASE_APP_ID: รหัสแอป Android ของ Firebase (ไม่ใช่ชื่อแพ็กเกจ)
        ตัวอย่างรหัสแอป Android ของ Firebase: 1:567383003300:android:17104a2ced0c9b9b

      • PATH/TO/symbols: ไดเรกทอรีเดียวกันกับที่คุณ ส่งไปยังแฟล็ก --split-debug-info เมื่อสร้างแอปพลิเคชัน

ขั้นตอนที่ 2: กำหนดค่าตัวแฮนเดิลข้อขัดข้อง

คุณสามารถตรวจจับข้อผิดพลาดทั้งหมดที่เกิดขึ้นภายในเฟรมเวิร์ก Flutter โดยอัตโนมัติได้ด้วยการลบล้าง FlutterError.onError ด้วย FirebaseCrashlytics.instance.recordFlutterFatalError ดังนี้

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await Firebase.initializeApp();

  // Pass all uncaught "fatal" errors from the framework to Crashlytics
  FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError;

  runApp(MyApp());
}

หากต้องการตรวจหาข้อผิดพลาดแบบอะซิงโครนัสที่เฟรมเวิร์ก Flutter ไม่ได้จัดการ ให้ใช้ PlatformDispatcher.instance.onError

Future<void> main() async {
    WidgetsFlutterBinding.ensureInitialized();
    await Firebase.initializeApp();
    FlutterError.onError = (errorDetails) {
      FirebaseCrashlytics.instance.recordFlutterFatalError(errorDetails);
    };
    // Pass all uncaught asynchronous errors that aren't handled by the Flutter framework to Crashlytics
    PlatformDispatcher.instance.onError = (error, stack) {
      FirebaseCrashlytics.instance.recordError(error, stack, fatal: true);
      return true;
    };
    runApp(MyApp());

}

ดูตัวอย่างวิธีจัดการข้อผิดพลาดประเภทอื่นๆ ได้ที่ ปรับแต่งรายงานข้อขัดข้อง

ขั้นตอนที่ 3: บังคับให้เกิดข้อขัดข้องในการทดสอบเพื่อตั้งค่าให้เสร็จสมบูรณ์

หากต้องการตั้งค่า Crashlytics ให้เสร็จสมบูรณ์และดูข้อมูลเริ่มต้นในCrashlytics แดชบอร์ดของคอนโซล Firebase คุณต้องบังคับให้ระบบยกเว้นการทดสอบ

  1. เพิ่มโค้ดลงในแอปที่คุณใช้บังคับให้ระบบส่งข้อยกเว้นการทดสอบได้

    หากคุณเพิ่มตัวแฮนเดิลข้อผิดพลาดที่เรียกใช้ FirebaseCrashlytics.instance.recordError(error, stack, fatal: true)ไปยังZone ระดับบนสุด คุณสามารถใช้โค้ดต่อไปนี้เพื่อเพิ่มปุ่มลงในแอป ซึ่งจะทําให้เกิดข้อยกเว้นในการทดสอบเมื่อกด

    TextButton(
        onPressed: () => throw Exception(),
        child: const Text("Throw Test Exception"),
    ),
    
  2. สร้างและเรียกใช้แอป

  3. บังคับให้ระบบแสดงข้อยกเว้นการทดสอบเพื่อส่งรายงานแรกของแอป

    1. เปิดแอปจากอุปกรณ์ทดสอบหรือโปรแกรมจำลอง

    2. ในแอป ให้กดปุ่มข้อยกเว้นการทดสอบที่คุณเพิ่มโดยใช้ โค้ดด้านบน

  4. ไปที่แดชบอร์ดCrashlyticsของคอนโซล Firebase เพื่อดูข้อขัดข้องในการทดสอบ

    หากรีเฟรชคอนโซลแล้ว แต่ยังไม่เห็นข้อขัดข้องที่ทดสอบ หลังจากผ่านไป 5 นาที ให้เปิดใช้การบันทึกการแก้ไขข้อบกพร่อง เพื่อดูว่าแอปส่งรายงานข้อขัดข้องหรือไม่


เพียงเท่านี้ก็เรียบร้อย Crashlytics กำลังตรวจสอบข้อขัดข้องในแอปของคุณ และข้อผิดพลาดที่ไม่ร้ายแรงและ ANR ใน Android ไปที่ Crashlyticsแดชบอร์ด เพื่อดูและตรวจสอบรายงานและสถิติทั้งหมด

ขั้นตอนถัดไป