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

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

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

ก่อนที่คุณจะเริ่ม

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

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

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

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

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

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

    flutter pub add firebase_crashlytics
    
  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 เพื่อดูและตรวจสอบรายงานและสถิติทั้งหมดของคุณ

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