| เลือกแพลตฟอร์ม: | iOS+ Android Android NDK Flutter Unity |
บทความนี้จะอธิบายวิธีเริ่มต้นใช้งาน Firebase Crashlytics ใน แอป Flutter
หลังจากตั้งค่าปลั๊กอิน Crashlytics Flutter ในแอปแล้ว คุณจะดู รายงานข้อขัดข้องที่ครอบคลุมได้ในคอนโซล Firebase
การตั้งค่า Crashlytics ต้องใช้ทั้งเครื่องมือบรรทัดคำสั่งและ IDE หากต้องการตั้งค่าให้เสร็จสมบูรณ์ คุณจะต้องบังคับให้เกิดข้อยกเว้นการทดสอบเพื่อส่งรายงานข้อขัดข้องแรกไปยัง Firebase
ก่อนเริ่มต้น
กำหนดค่าและเริ่มต้น Firebase ในโปรเจ็กต์ Flutter หากยังไม่ได้ดำเนินการ
แนะนำ: หากต้องการรับ บันทึก Breadcrumb โดยอัตโนมัติเพื่อทำความเข้าใจการกระทำของผู้ใช้ที่นำไปสู่เหตุการณ์ข้อขัดข้อง ข้อผิดพลาดที่ไม่ร้ายแรง หรือ ANR คุณต้องเปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase
หากจะสร้างโปรเจ็กต์ Firebase ใหม่ ให้เปิดใช้ Google Analytics ในระหว่างขั้นตอนการสร้างโปรเจ็กต์
หากใช้โปรเจ็กต์ Firebase เดิมที่ไม่ได้เปิดใช้ Google Analytics คุณสามารถเปิดใช้ได้ในหน้า
การตั้งค่า > การผสานรวม ของ Firebase คอนโซล
โปรดทราบว่าบันทึก Breadcrumb พร้อมใช้งานสำหรับแพลตฟอร์ม Android และ Apple ทั้งหมด ที่ Crashlytics รองรับ (ยกเว้น watchOS)
ขั้นตอนที่ 1: เพิ่ม Crashlytics ลงในโปรเจ็กต์ Flutter
จากรูทของโปรเจ็กต์ Flutter ให้เรียกใช้คำสั่งต่อไปนี้เพื่อติดตั้ง ปลั๊กอิน Flutter สำหรับ Crashlytics
หากต้องการใช้ประโยชน์จาก บันทึก Breadcrumb ให้เพิ่มปลั๊กอิน Flutter สำหรับ Google Analytics ลงในแอปด้วย และตรวจสอบว่าได้ เปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase แล้ว
flutter pub add firebase_crashlytics && flutter pub add firebase_analyticsจากไดเรกทอรีรากของโปรเจ็กต์ Flutter ให้เรียกใช้คำสั่งต่อไปนี้
flutterfire configureการเรียกใช้คำสั่งนี้จะช่วยให้มั่นใจว่าการกำหนดค่า Firebase ของแอป Flutter เป็นเวอร์ชันล่าสุด และสำหรับ Android จะเพิ่มปลั๊กอิน Gradle ที่จำเป็นลงในแอปCrashlytics
เมื่อเสร็จแล้ว ให้สร้างโปรเจ็กต์ Flutter อีกครั้งโดยทำดังนี้
flutter run(ไม่บังคับ) หากโปรเจ็กต์ Flutter ใช้แฟล็ก
--split-debug-info(และอาจใช้แฟล็ก--obfuscateด้วย) คุณจะต้องทำตามขั้นตอนเพิ่มเติมเพื่อแสดงสแต็กเทรซที่อ่านได้สำหรับแอปแพลตฟอร์ม Apple: ตรวจสอบว่าโปรเจ็กต์ใช้การกำหนดค่า เวอร์ชันที่แนะนำ (Flutter 3.12.0 ขึ้นไปและ Crashlytics ปลั๊กอิน Flutter 3.3.4 ขึ้นไป) เพื่อให้โปรเจ็กต์สร้างและอัปโหลดสัญลักษณ์ Flutter (ไฟล์ dSYM) ไปยัง Crashlytics ได้โดยอัตโนมัติ
Android: ใช้ Firebase CLI (เวอร์ชัน 11.9.0 ขึ้นไป) เพื่ออัปโหลด สัญลักษณ์การแก้ไขข้อบกพร่องของ Flutter คุณต้องอัปโหลดสัญลักษณ์การแก้ไขข้อบกพร่อง ก่อน รายงานข้อขัดข้องจากการสร้างโค้ดที่ปรับให้ยากต่อการอ่าน (Obfuscate)
จากไดเรกทอรีรูทของโปรเจ็กต์ Flutter ให้เรียกใช้คำสั่งต่อไปนี้
firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
FIREBASE_APP_ID: รหัสแอป Firebase Android (ไม่ใช่ ชื่อแพ็กเกจ)
ตัวอย่างรหัสแอป Firebase Android:1:567383003300:android:17104a2ced0c9b9bPATH/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 คุณต้องบังคับให้เกิดข้อยกเว้นการทดสอบ
เพิ่มโค้ดลงในแอปที่คุณใช้บังคับให้เกิดข้อยกเว้นการทดสอบได้
หากคุณเพิ่มตัวจัดการข้อผิดพลาดที่เรียก
FirebaseCrashlytics.instance.recordError(error, stack, fatal: true)ลงในZoneระดับบนสุด คุณสามารถใช้โค้ดต่อไปนี้เพื่อเพิ่มปุ่มลงในแอป ซึ่งเมื่อกดแล้ว จะส่งข้อยกเว้นการทดสอบTextButton( onPressed: () => throw Exception(), child: const Text("Throw Test Exception"), ),สร้างและเรียกใช้แอป
บังคับให้เกิดข้อยกเว้นการทดสอบเพื่อส่งรายงานแรกของแอปโดยทำดังนี้
เปิดแอปจากอุปกรณ์ทดสอบหรือโปรแกรมจำลอง
ในแอป ให้กดปุ่มข้อยกเว้นการทดสอบที่คุณเพิ่มโดยใช้โค้ดด้านบน
ในคอนโซล Firebase ให้ไปที่แดชบอร์ด DevOps และการมีส่วนร่วม > Crashlytics เพื่อตรวจสอบรายงานข้อขัดข้องในการทดสอบ
หากรีเฟรชคอนโซลแล้วแต่ยังไม่เห็นข้อขัดข้องในการทดสอบ หลังจากผ่านไป 5 นาที ให้เปิดใช้การบันทึกการแก้ไขข้อบกพร่อง เพื่อดูว่าแอปส่งรายงานข้อขัดข้องหรือไม่
เพียงเท่านี้ก็เรียบร้อยแล้ว Crashlytics จะตรวจสอบข้อขัดข้องในแอป รวมถึงข้อผิดพลาดที่ไม่ร้ายแรงและ ANR ใน Android ไปที่แดชบอร์ด Crashlytics เพื่อดูและตรวจสอบรายงานและสถิติทั้งหมด
ขั้นตอนถัดไป
ปรับแต่งการตั้งค่ารายงานข้อขัดข้อง โดยเพิ่มการรายงานแบบเลือกใช้ บันทึก คีย์ และการติดตามข้อผิดพลาดที่ไม่ร้ายแรงเพิ่มเติม
ผสานรวมกับ Google Play เพื่อให้คุณกรองรายงานข้อขัดข้องของแอป Android ตามแทร็กGoogle Play ได้โดยตรงในแดชบอร์ดCrashlytics ซึ่งจะช่วยให้คุณมุ่งเน้นแดชบอร์ดไปที่บิลด์ที่เฉพาะเจาะจงได้ดียิ่งขึ้น
ดูสแต็กเทรซและสถิติข้อขัดข้องควบคู่ไปกับโค้ดของคุณ ด้วยหน้าต่าง ข้อมูลเชิงลึกด้านคุณภาพของแอป ใน Android Studio (พร้อมใช้งานตั้งแต่ เวอร์ชัน Electric Eel 2022.1.1)
ส่งออกข้อมูลไปยัง BigQuery หรือ Cloud Logging เพื่อการวิเคราะห์ขั้นสูงและใช้ฟีเจอร์ต่างๆ เช่น การค้นหาข้อมูล การสร้างแดชบอร์ดที่กำหนดเอง และการตั้งค่าการแจ้งเตือนที่กำหนดเอง