การเริ่มต้นใช้งานฉบับย่อนี้จะอธิบายวิธีตั้งค่า 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 จะเพิ่มCrashlyticsปลั๊กอิน Gradle ที่จําเป็นลงในแอป
เมื่อดำเนินการเสร็จแล้ว ให้สร้างโปรเจ็กต์ Flutter อีกครั้งโดยทำดังนี้
flutter run
(ไม่บังคับ) หากโปรเจ็กต์ Flutter ใช้ Flag
--split-debug-info
(และ Flag--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 (ไม่ใช่ชื่อแพ็กเกจ)
ตัวอย่างรหัสแอป Firebase สำหรับ Android: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 เป็นต้นไป)