การเริ่มต้นอย่างรวดเร็วนี้จะอธิบายวิธีตั้งค่า Firebase Crashlytics ในแอปของคุณด้วยปลั๊กอิน Crashlytics Flutter เพื่อให้คุณสามารถรับรายงานข้อขัดข้องที่ครอบคลุมในคอนโซล Firebase
การตั้งค่า Crashlytics เกี่ยวข้องกับการใช้ทั้งเครื่องมือบรรทัดคำสั่งและ IDE ของคุณ หากต้องการตั้งค่าให้เสร็จสิ้น คุณจะต้องบังคับให้ส่งข้อยกเว้นการทดสอบเพื่อส่งรายงานข้อขัดข้องแรกของคุณไปยัง Firebase
ก่อนที่คุณจะเริ่ม
หากคุณยังไม่ได้ ดำเนินการ ให้กำหนดค่าและเริ่มต้น Firebase ในโปรเจ็กต์ Flutter ของคุณ
แนะนำ : หากต้องการรับคุณลักษณะต่างๆ เช่น ผู้ใช้ที่ปราศจากข้อขัดข้อง บันทึกเบรดครัมบ์ และการแจ้งเตือนความเร็ว คุณต้องเปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase ของคุณ
แพลตฟอร์ม Android และ Apple ทั้งหมดที่รองรับ Crashlytics (ยกเว้น watchOS) สามารถใช้ประโยชน์จากฟีเจอร์เหล่านี้จาก Google Analytics ได้
ตรวจสอบให้แน่ใจว่าเปิดใช้งาน Google Analytics ในโปรเจ็กต์ Firebase ของคุณแล้ว: ไปที่
ขั้นตอนที่ 1 : เพิ่ม Crashlytics ให้กับโปรเจ็กต์ Flutter ของคุณ
จากรากของโปรเจ็กต์ Flutter ของคุณ ให้รันคำสั่งต่อไปนี้เพื่อติดตั้งปลั๊กอิน Crashlytics Flutter:
flutter pub add firebase_crashlytics
จากไดเร็กทอรีรากของโปรเจ็กต์ 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 คุณต้องอัปโหลดสัญลักษณ์การแก้ไข ก่อนที่ จะรายงานข้อขัดข้องจากบิวด์โค้ดที่สร้างความสับสน
จากไดเร็กทอรีรากของโปรเจ็กต์ Flutter ของคุณ ให้รันคำสั่งต่อไปนี้:
firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
FIREBASE_APP_ID : รหัสแอป Firebase Android ของคุณ (ไม่ใช่ชื่อแพ็คเกจของคุณ)
ตัวอย่างรหัสแอป Android ของ Firebase:1:567383003300:android:17104a2ced0c9b9b
ต่อไปนี้เป็นสองวิธีในการค้นหารหัสแอป Firebase ของคุณ:
ในไฟล์
google-services.json
รหัสแอปของคุณคือค่าmobilesdk_app_id
หรือในคอนโซล Firebase ให้ไปที่ การตั้งค่าโครงการ เลื่อนลงไปที่การ์ด แอปของคุณ จากนั้นคลิกที่แอป Firebase ที่ต้องการเพื่อค้นหารหัสแอป
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 เพื่อดูการทดสอบข้อขัดข้อง
หากคุณรีเฟรชคอนโซลแล้ว แต่ยังไม่เห็นการทดสอบข้อขัดข้องหลังจากผ่านไปห้านาที ให้เปิดใช้งานการบันทึกการแก้ไขข้อบกพร่อง เพื่อดูว่าแอปของคุณส่งรายงานข้อขัดข้องหรือไม่
แค่นั้นแหละ! ขณะนี้ Crashlytics กำลังตรวจสอบแอปของคุณเพื่อหาข้อขัดข้องและข้อผิดพลาดที่ไม่ร้ายแรงและ ANR บน Android ไปที่ แดชบอร์ด Crashlytics เพื่อดูและตรวจสอบรายงานและสถิติทั้งหมดของคุณ
ขั้นตอนถัดไป
ปรับแต่งการตั้งค่ารายงานข้อขัดข้องของคุณ โดยเพิ่มการรายงานที่เลือก บันทึก คีย์ และการติดตามข้อผิดพลาดที่ไม่ร้ายแรงเพิ่มเติม
ผสานรวมกับ Google Play เพื่อให้คุณสามารถกรองรายงานข้อขัดข้องของแอป Android ตามแทร็ก Google Play ได้โดยตรงในแดชบอร์ด Crashlytics วิธีนี้ช่วยให้คุณมุ่งความสนใจไปที่แดชบอร์ดของคุณไปที่บิวด์เฉพาะได้ดีขึ้น
ดูสแต็กเทรซและสถิติข้อขัดข้องควบคู่ไปกับโค้ดของคุณ ด้วยหน้าต่าง ข้อมูลเชิงลึกด้านคุณภาพแอป ใน Android Studio (เริ่มตั้งแต่ Electric Eel 2022.1.1)