รับรายงานข้อขัดข้องที่อ่านได้ในแดชบอร์ด Crashlytics (Flutter)

เลือกแพลตฟอร์ม iOS+ Android Flutter Unity


โดยค่าเริ่มต้น Firebase Crashlytics จะวัดคุมโปรเจ็กต์ Flutter โดยอัตโนมัติเพื่ออัปโหลดไฟล์สัญลักษณ์ที่จำเป็นซึ่งช่วยให้มั่นใจว่ารายงานข้อขัดข้องได้รับการถอดรหัสซอร์สโค้ดที่สร้างความสับสนและที่มนุษย์อ่านได้

อย่างไรก็ตาม มีบางกรณีที่อาจส่งผลให้โปรเจ็กต์ได้รับการกำหนดค่าไม่สมบูรณ์ คู่มือนี้จะอธิบายสิ่งที่การทำงานอัตโนมัติทำและแสดงขั้นตอนแรกในการแก้ไขข้อบกพร่องของการตั้งค่าโปรเจ็กต์

แพลตฟอร์ม Apple

ตรวจสอบการกำหนดค่าสำหรับการอัปโหลดไฟล์ dSYM

การเพิ่มปลั๊กอิน Flutter Crashlytics และเรียกใช้คำสั่ง flutterfire configure จะพยายามเพิ่มสคริปต์การเรียกใช้ลงในพื้นที่ทำงาน Xcode ของโปรเจ็กต์ซึ่งจะค้นหาและอัปโหลดไฟล์สัญลักษณ์ dSYM ที่จำเป็นไปยัง Crashlytics หากไม่มีไฟล์เหล่านี้ คุณจะเห็นการแจ้งเตือน "ไม่มี dSYM" ในแดชบอร์ด Crashlytics และระบบแบ็กเอนด์จะเก็บข้อยกเว้นไว้จนกว่าจะมีการอัปโหลดไฟล์ที่ขาดหายไป

หากพบปัญหานี้ ก่อนอื่นให้ตรวจสอบว่าคุณได้ติดตั้งสคริปต์การเรียกใช้แล้ว โดยทำดังนี้

  1. ค้นหาและเปิดไฟล์ Xcode Workspace ในไดเรกทอรี iOS ของโปรเจ็กต์ (FLUTTER_PROJECT_NAME/ios/Runner.xcworkspace)

  2. ตรวจสอบว่าได้เพิ่มสคริปต์การเรียกใช้ชื่อ [firebase_crashlytics] Crashlytics Upload Symbols ลงในระยะการสร้างของเป้าหมาย Runner แล้วหรือยัง

    ดูส่วนที่เกี่ยวข้องด้านล่างเพื่อดูว่าสคริปต์การเรียกใช้ไม่มีอยู่หรือสคริปต์การเรียกใช้มีอยู่

ตรวจสอบการกำหนดค่าเวอร์ชันสำหรับ Flutter และ Crashlytics (หากใช้แฟล็ก --split-debug-info)

หากโปรเจ็กต์ Flutter ใช้แฟล็ก --split-debug-info (และแฟล็ก --obfuscate ด้วย หากต้องการ) คุณจะต้องทำตามขั้นตอนเพิ่มเติมเพื่อแสดงสแต็กเทรซที่อ่านได้สำหรับแอป

ตรวจสอบว่าโปรเจ็กต์ใช้การกำหนดค่าเวอร์ชันที่แนะนำ (Flutter 3.12.0 ขึ้นไปและปลั๊กอิน Crashlytics Flutter 3.3.4 ขึ้นไป) เพื่อให้โปรเจ็กต์สร้างและอัปโหลดสัญลักษณ์ Flutter (ไฟล์ dSYM) ไปยัง Crashlytics โดยอัตโนมัติได้

Android

ตรวจสอบการกำหนดค่าทรัพยากร Dependency

คำสั่ง flutterfire configure จะพยายามเพิ่มทรัพยากร Dependency ที่จำเป็นลงในไฟล์บิลด์ Gradle ของโปรเจ็กต์ หากไม่มีทรัพยากร Dependency เหล่านี้ รายงานข้อขัดข้องในคอนโซล Firebase อาจถูกสร้างความสับสนหากเปิดการสร้างความสับสนไว้

ตรวจสอบว่ามีบรรทัดต่อไปนี้ใน build.gradle ระดับโปรเจ็กต์และใน build.gradle ระดับแอป

  • ในไฟล์บิลด์ระดับโปรเจ็กต์ (android/build.gradle) ให้ตรวจสอบบรรทัดต่อไปนี้

    dependencies {
    // ... other dependencies
    
    classpath 'com.google.gms:google-services:4.3.5'
    classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1'
    }
  • ในไฟล์บิลด์ระดับแอป (android/app/build.gradle) ให้ตรวจสอบบรรทัดต่อไปนี้

    // ... other imports
    
    android {
    // ... your android config
    }
    
    dependencies {
    // ... your dependencies
    }
    
    // This section must appear at the bottom of the file
    apply plugin: 'com.google.gms.google-services'
    apply plugin: 'com.google.firebase.crashlytics'

ตรวจสอบว่าคุณใช้ CLI เพื่ออัปโหลดสัญลักษณ์ Flutter (หากใช้แฟล็ก --split-debug-info)

หากโปรเจ็กต์ Flutter ใช้แฟล็ก --split-debug-info (และแฟล็ก --obfuscate ด้วย หากต้องการ) คุณจะต้องทำตามขั้นตอนเพิ่มเติมเพื่อแสดงสแต็กเทรซที่อ่านได้สำหรับแอป

ใช้ Firebase CLI (v.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:17104a2ced0c9b9b

  • PATH/TO/symbols: ไดเรกทอรีเดียวกับที่คุณส่งไปยังแฟล็ก --split-debug-info เมื่อสร้างแอปพลิเคชัน

หากยังคงพบปัญหาอยู่ โปรดดูคู่มือเฉพาะสำหรับ Android ในการแก้ปัญหารายงานที่สร้างความสับสน