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

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


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

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

แพลตฟอร์มของ Apple

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

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

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

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

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

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

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

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

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

Android

ตรวจสอบการกำหนดค่าการขึ้นต่อกัน

คำสั่ง flutterfire configure จะพยายามเพิ่มทรัพยากร Dependency ที่จำเป็นลงใน ไฟล์บิลด์ Gradle ของโปรเจ็กต์ หากไม่มีการอ้างอิงเหล่านี้ รายงานข้อขัดข้องใน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 ด้วย) คุณจะต้องทำตามขั้นตอนเพิ่มเติมเพื่อแสดง Stack Trace ที่อ่านได้สำหรับแอป

ใช้ 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: ไดเรกทอรีเดียวกันกับที่คุณ ส่งไปยังแฟล็ก --split-debug-info เมื่อสร้างแอปพลิเคชัน

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