| เลือกแพลตฟอร์ม | iOS+ Android Android NDK Flutter Unity |
คู่มือนี้อธิบายวิธีเริ่มต้นใช้งาน Firebase Crashlytics ในแอป Flutter
หลังจากตั้งค่าปลั๊กอิน Flutter ของ Crashlytics ในแอปแล้ว คุณจะได้รับรายงานข้อขัดข้องที่ครอบคลุมในคอนโซล Firebase
การตั้งค่า Crashlytics ต้องใช้ทั้งเครื่องมือบรรทัดคำสั่งและ IDE หากต้องการตั้งค่าให้เสร็จสมบูรณ์ คุณจะต้องบังคับให้มีการส่งข้อยกเว้นการทดสอบเพื่อส่งรายงานข้อขัดข้องฉบับแรกไปยัง Firebase
ก่อนเริ่มต้น
กำหนดค่าและเริ่มต้น Firebase ในโปรเจ็กต์ Flutter หากยังไม่ได้ทำ
แนะนำ: หากต้องการรับบันทึกเบรดครัมบ์โดยอัตโนมัติเพื่อทำความเข้าใจการกระทำของผู้ใช้ที่นำไปสู่เหตุการณ์ข้อขัดข้อง ข้อผิดพลาดที่ไม่ร้ายแรง หรือ ANR คุณต้องเปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase
หากจะสร้างโปรเจ็กต์ Firebase ใหม่ ให้เปิดใช้ Google Analytics ในระหว่างขั้นตอนการสร้างโปรเจ็กต์
หากใช้โปรเจ็กต์ Firebase เดิมที่ไม่ได้เปิดใช้ Google Analytics คุณสามารถเปิดใช้ได้ในหน้า
การตั้งค่า > การผสานรวมของคอนโซล Firebase
โปรดทราบว่าบันทึกเบรดครัมบ์พร้อมใช้งานสำหรับแพลตฟอร์ม 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 (เวอร์ชัน 11.9.0 ขึ้นไป) เพื่ออัปโหลดสัญลักษณ์การแก้ไขข้อบกพร่องของ Flutter คุณต้องอัปโหลดสัญลักษณ์การแก้ไขข้อบกพร่องก่อนรายงานข้อขัดข้องจากบิลด์โค้ดที่สร้างความสับสน
เรียกใช้คำสั่งต่อไปนี้จากไดเรกทอรีรากของโปรเจ็กต์ Flutter
firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
FIREBASE_APP_ID: รหัสแอป Android ใน Firebase (ไม่ใช่ชื่อแพ็กเกจ)
ตัวอย่างรหัสแอป Android ใน Firebase: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 กำลังตรวจสอบแอปของคุณเพื่อหาข้อขัดข้อง และใน Android จะตรวจสอบข้อผิดพลาดที่ไม่ร้ายแรงและ ANR ด้วย ไปที่แดชบอร์ด Crashlytics เพื่อดูและตรวจสอบรายงานและสถิติทั้งหมด
ขั้นตอนถัดไป
ปรับแต่งการตั้งค่ารายงานข้อขัดข้องโดยเพิ่มการรายงานแบบเลือกใช้ บันทึก คีย์ และการติดตามข้อผิดพลาดเพิ่มเติมที่ไม่ร้ายแรง
ผสานรวมกับ Google Play เพื่อให้คุณกรองรายงานข้อขัดข้องของแอป Android ตามแทร็ก Google Play ได้โดยตรงในแดชบอร์ด Crashlytics ซึ่งจะช่วยให้คุณมุ่งเน้นแดชบอร์ดไปที่บิลด์ที่เฉพาะเจาะจงได้ดียิ่งขึ้น
ดูสแต็กเทรซและสถิติข้อขัดข้องควบคู่ไปกับโค้ดของคุณด้วยหน้าต่างข้อมูลเชิงลึกด้านคุณภาพของแอปใน Android Studio (พร้อมใช้งานตั้งแต่ Electric Eel 2022.1.1 เป็นต้นไป)
ส่งออกข้อมูลไปยัง BigQuery หรือ Cloud Logging เพื่อใช้การวิเคราะห์และฟีเจอร์ขั้นสูง เช่น การค้นหาข้อมูล การสร้างแดชบอร์ดที่กำหนดเอง และการตั้งค่าการแจ้งเตือนที่กำหนดเอง