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


คู่มือเริ่มต้นฉบับย่อนี้อธิบายวิธีตั้งค่า Firebase Crashlytics ในแอปของคุณ ด้วยปลั๊กอิน Flutter Crashlytics เพื่อให้คุณได้รับข้อมูลข้อขัดข้อง ในคอนโซล 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 ได้เพิ่ม Crashlytics Gradle ที่จำเป็น กับแอปของคุณได้เลย

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

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

    • แพลตฟอร์มของ 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: ไดเรกทอรีเดียวกับที่คุณ ไปยัง Flag --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 กำลังตรวจสอบแอปของคุณเพื่อหาข้อขัดข้องและใน Android, ข้อผิดพลาดที่ไม่ร้ายแรงและ ANR เข้าชม หน้าแดชบอร์ด Crashlytics เพื่อดูและตรวจสอบรายงานและสถิติทั้งหมดของคุณ

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