เริ่มต้นใช้งาน 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 จะเพิ่มปลั๊กอิน 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 คุณต้องอัปโหลดสัญลักษณ์การแก้ไข ก่อนที่ จะรายงานข้อขัดข้องจากบิวด์โค้ดที่สร้างความสับสน

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

      firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
      • FIREBASE_APP_ID : รหัสแอป Firebase Android ของคุณ (ไม่ใช่ชื่อแพ็คเกจของคุณ)
        ตัวอย่างรหัสแอป 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 เพื่อดูการทดสอบข้อขัดข้อง

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


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

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