การเริ่มต้นอย่างรวดเร็วนี้อธิบายวิธีตั้งค่า Firebase Crashlytics ในแอป ด้วยปลั๊กอิน Crashlytics Flutter เพื่อให้คุณได้รับรายงานข้อขัดข้องที่ครอบคลุม ในคอนโซล Firebase
การตั้งค่า Crashlytics ต้องใช้ทั้งเครื่องมือบรรทัดคำสั่งและ IDE หากต้องการตั้งค่าให้เสร็จสมบูรณ์ คุณจะต้องบังคับให้ระบบยกเว้นการทดสอบเพื่อส่ง รายงานข้อขัดข้องแรกไปยัง Firebase
ก่อนเริ่มต้น
หากยังไม่ได้ดำเนินการ ให้กำหนดค่าและเริ่มต้น Firebase ในโปรเจ็กต์ Flutter
แนะนํา: หากต้องการรับบันทึกเส้นทางโดยอัตโนมัติ เพื่อทําความเข้าใจการกระทําของผู้ใช้ที่นําไปสู่เหตุการณ์ข้อขัดข้อง ข้อผิดพลาดที่ไม่ร้ายแรง หรือ ANR คุณต้องเปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase
หากโปรเจ็กต์ Firebase ที่มีอยู่ไม่ได้เปิดใช้ Google Analytics คุณสามารถเปิดใช้ Google Analytics ได้จาก แท็บการผสานรวมของ
ในคอนโซล > การตั้งค่าโปรเจ็กต์Firebase หากจะสร้างโปรเจ็กต์ Firebase ใหม่ ให้เปิดใช้ Google Analytics ในระหว่างขั้นตอนการสร้างโปรเจ็กต์
โปรดทราบว่าบันทึกเส้นทางจะใช้ได้กับแพลตฟอร์ม Android และ Apple ทั้งหมดที่ Crashlytics รองรับ (ยกเว้น watchOS)
ขั้นตอนที่ 1: เพิ่ม Crashlytics ลงในโปรเจ็กต์ Flutter
จากรูทของโปรเจ็กต์ Flutter ให้เรียกใช้คำสั่งต่อไปนี้เพื่อติดตั้งปลั๊กอิน Flutter สำหรับ Crashlytics
หากต้องการใช้ประโยชน์จากบันทึกเส้นทาง ให้เพิ่มปลั๊กอิน Flutter สําหรับ Google Analytics ลงในแอปด้วย ตรวจสอบว่าเปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase แล้ว
flutter pub add firebase_crashlytics && flutter pub add firebase_analytics
จากไดเรกทอรีรากของโปรเจ็กต์ Flutter ให้เรียกใช้คำสั่งต่อไปนี้
flutterfire configure
การเรียกใช้คำสั่งนี้จะช่วยให้มั่นใจได้ว่าการกำหนดค่า Firebase ของแอป Flutter เป็นเวอร์ชันล่าสุด และสำหรับ Android จะเพิ่มปลั๊กอิน CrashlyticsGradle ที่จำเป็นลงในแอป
เมื่อดำเนินการเสร็จแล้ว ให้สร้างโปรเจ็กต์ Flutter ใหม่โดยทำดังนี้
flutter run
(ไม่บังคับ) หากโปรเจ็กต์ 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 คุณต้องบังคับให้ระบบยกเว้นการทดสอบ
เพิ่มโค้ดลงในแอปที่คุณใช้บังคับให้ระบบส่งข้อยกเว้นการทดสอบได้
หากคุณเพิ่มตัวแฮนเดิลข้อผิดพลาดที่เรียกใช้
FirebaseCrashlytics.instance.recordError(error, stack, fatal: true)
ไปยังZone
ระดับบนสุด คุณสามารถใช้โค้ดต่อไปนี้เพื่อเพิ่มปุ่มลงในแอป ซึ่งจะทําให้เกิดข้อยกเว้นในการทดสอบเมื่อกดTextButton( onPressed: () => throw Exception(), child: const Text("Throw Test Exception"), ),
สร้างและเรียกใช้แอป
บังคับให้ระบบแสดงข้อยกเว้นการทดสอบเพื่อส่งรายงานแรกของแอป
เปิดแอปจากอุปกรณ์ทดสอบหรือโปรแกรมจำลอง
ในแอป ให้กดปุ่มข้อยกเว้นการทดสอบที่คุณเพิ่มโดยใช้ โค้ดด้านบน
ไปที่แดชบอร์ดCrashlyticsของคอนโซล Firebase เพื่อดูข้อขัดข้องในการทดสอบ
หากรีเฟรชคอนโซลแล้ว แต่ยังไม่เห็นข้อขัดข้องที่ทดสอบ หลังจากผ่านไป 5 นาที ให้เปิดใช้การบันทึกการแก้ไขข้อบกพร่อง เพื่อดูว่าแอปส่งรายงานข้อขัดข้องหรือไม่
เพียงเท่านี้ก็เรียบร้อย Crashlytics กำลังตรวจสอบข้อขัดข้องในแอปของคุณ และข้อผิดพลาดที่ไม่ร้ายแรงและ ANR ใน Android ไปที่
Crashlyticsแดชบอร์ด
เพื่อดูและตรวจสอบรายงานและสถิติทั้งหมด
ขั้นตอนถัดไป
ปรับแต่งการตั้งค่ารายงานข้อขัดข้อง โดยเพิ่มการรายงานแบบเลือกใช้ บันทึก คีย์ และการติดตามข้อผิดพลาดที่ไม่ร้ายแรงเพิ่มเติม
ผสานรวมกับ Google Play เพื่อให้คุณกรองรายงานข้อขัดข้องของแอป Android ตามGoogle Playแทร็ก ได้โดยตรงในแดชบอร์ด Crashlytics ซึ่งจะช่วยให้คุณมุ่งเน้น แดชบอร์ดไปที่บิลด์ที่เฉพาะเจาะจงได้ดียิ่งขึ้น
ดู Stack Trace และสถิติข้อขัดข้องควบคู่ไปกับ โค้ด ด้วยหน้าต่างข้อมูลเชิงลึกเกี่ยวกับคุณภาพของแอปใน Android Studio (พร้อมใช้งานตั้งแต่ Electric Eel 2022.1.1 เป็นต้นไป)