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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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