| เลือกแพลตฟอร์ม: | iOS+ Android Flutter Unity |
โดยค่าเริ่มต้น Firebase Crashlytics จะติดตั้งเครื่องมือในโปรเจ็กต์ Flutter โดยอัตโนมัติเพื่ออัปโหลดไฟล์สัญลักษณ์ที่จำเป็นซึ่งจะช่วยให้รายงานข้อขัดข้องได้รับการยกเลิกการปกปิดและมนุษย์อ่านได้
อย่างไรก็ตาม มีบางกรณีที่อาจทำให้โปรเจ็กต์ได้รับการกำหนดค่าไม่ครบถ้วน คู่มือนี้จะอธิบายสิ่งที่การทำงานอัตโนมัติทำและให้ขั้นตอนแรกในการแก้ไขข้อบกพร่องในการตั้งค่าโปรเจ็กต์
แพลตฟอร์มของ Apple
ตรวจสอบการกำหนดค่าสำหรับการอัปโหลดไฟล์ dSYM
การเพิ่มCrashlyticsปลั๊กอิน Flutter และการเรียกใช้คำสั่ง
flutterfire configure จะพยายามเพิ่มสคริปต์การเรียกใช้ลงในพื้นที่ทํางาน Xcode ของโปรเจ็กต์
ซึ่งจะค้นหาและอัปโหลดไฟล์สัญลักษณ์ dSYM ที่จําเป็นไปยัง Crashlytics หากไม่มีไฟล์เหล่านี้ คุณจะเห็นการแจ้งเตือน "ไม่มี dSYM" ใน
Crashlytics แดชบอร์ด และแบ็กเอนด์จะระงับข้อยกเว้นไว้
จนกว่าจะมีการอัปโหลดไฟล์ที่ขาดหายไป
หากพบปัญหานี้ ให้ตรวจสอบก่อนว่าคุณได้ติดตั้งสคริปต์การเรียกใช้แล้วหรือไม่ โดยทำดังนี้
ค้นหาและเปิดไฟล์พื้นที่ทํางาน Xcode ในไดเรกทอรี iOS ของโปรเจ็กต์ (
FLUTTER_PROJECT_NAME/ios/Runner.xcworkspace)ระบุว่าได้เพิ่มสคริปต์ที่เรียกใช้ชื่อ
[firebase_crashlytics] Crashlytics Upload Symbolsลงใน Build Phases ของเป้าหมาย Runner หรือไม่ดูส่วนที่เกี่ยวข้องด้านล่างว่าไม่มีสคริปต์ที่เรียกใช้หรือมีสคริปต์ที่เรียกใช้
ตรวจสอบการกำหนดค่าเวอร์ชันสำหรับ Flutter และ Crashlytics (หากใช้ Flag --split-debug-info)
หากโปรเจ็กต์ Flutter ใช้ Flag --split-debug-info (และอาจใช้ Flag --obfuscate ด้วย) คุณจะต้องทำตามขั้นตอนเพิ่มเติมเพื่อแสดง Stack Trace ที่อ่านได้สำหรับแอป
ตรวจสอบว่าโปรเจ็กต์ใช้การกำหนดค่าเวอร์ชันที่แนะนำ (Flutter 3.12.0 ขึ้นไปและCrashlyticsปลั๊กอิน Flutter 3.3.4 ขึ้นไป) เพื่อให้โปรเจ็กต์ สร้างและอัปโหลดสัญลักษณ์ Flutter (ไฟล์ dSYM) ไปยัง Crashlyticsได้โดยอัตโนมัติ
Android
ตรวจสอบการกำหนดค่าทรัพยากร Dependency ของคุณ
คำสั่ง 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 ใช้ Flag --split-debug-info (และอาจใช้ Flag --obfuscate ด้วย) คุณจะต้องทำตามขั้นตอนเพิ่มเติมเพื่อแสดง Stack Trace ที่อ่านได้สำหรับแอป
ใช้ FirebaseCLI (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:17104a2ced0c9b9bPATH/TO/symbols: ไดเรกทอรีเดียวกันกับที่คุณ ส่งไปยังแฟล็ก--split-debug-infoเมื่อสร้างแอปพลิเคชัน
หากยังพบปัญหาอยู่ โปรดดูคำแนะนำเฉพาะสำหรับ Android ในการแก้ปัญหาเกี่ยวกับรายงานที่ผ่านการปกปิด