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