| เลือกแพลตฟอร์ม: | iOS+ Android Android NDK Flutter Unity |
คู่มือนี้จะอธิบายวิธีเริ่มต้นใช้งาน Firebase Crashlytics ใน แอปแพลตฟอร์ม Apple (เช่น แอป iOS)
หลังจากตั้งค่า Firebase Crashlytics SDK ในแอปแล้ว คุณจะ ได้รับรายงานข้อขัดข้องที่ครอบคลุมในคอนโซล Firebase โดย Crashlytics สำหรับแพลตฟอร์ม Apple จะให้รายงานข้อขัดข้องและข้อผิดพลาดที่ไม่ร้ายแรง
การตั้งค่า Crashlytics ต้องดำเนินการทั้งในคอนโซล Firebase และ IDE (เช่น การเพิ่มไฟล์การกำหนดค่า Firebase และ Crashlytics SDK) คุณจะต้องบังคับให้เกิดข้อขัดข้องในการทดสอบเพื่อส่งรายงานข้อขัดข้องแรกไปยัง Firebase จึงจะตั้งค่าให้เสร็จสมบูรณ์ได้
ก่อนเริ่มต้น
หากยังไม่ได้เพิ่ม เพิ่ม Firebase ลงในโปรเจ็กต์ Apple หากไม่มีแอป Apple คุณสามารถดาวน์โหลดแอป ตัวอย่างได้
แนะนำ: หากต้องการรับ บันทึก Breadcrumb โดยอัตโนมัติเพื่อทำความเข้าใจการดำเนินการของผู้ใช้ที่นำไปสู่ข้อขัดข้องหรือเหตุการณ์ที่ไม่ร้ายแรง คุณต้องเปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase
หากจะสร้างโปรเจ็กต์ Firebase ใหม่ ให้เปิดใช้ Google Analytics ในระหว่างขั้นตอนการสร้างโปรเจ็กต์
หากใช้โปรเจ็กต์ Firebase เดิมที่ไม่ได้เปิดใช้ Google Analytics คุณสามารถเปิดใช้ได้ในหน้า
Settings > Integrations ของ Firebase คอนโซล
โปรดทราบว่าบันทึก Breadcrumb ใช้ได้กับแพลตฟอร์ม Apple ทั้งหมดที่ Crashlytics รองรับ ยกเว้น watchOS
ขั้นตอนที่ 1: เพิ่ม Crashlytics SDK ลงในแอป
ใช้ Swift Package Manager เพื่อติดตั้งและจัดการทรัพยากร Dependency ของ Firebase
- เปิดโปรเจ็กต์แอปใน Xcode แล้วไปที่ File > Add Packages
- เมื่อได้รับข้อความแจ้ง ให้เพิ่มที่เก็บ Firebase Apple Platforms SDK ดังนี้
- เลือกไลบรารี Crashlytics
- หากต้องการใช้ประโยชน์จาก บันทึก Breadcrumb ให้เพิ่ม Firebase SDK สำหรับ Google Analytics ลงในแอปด้วย และตรวจสอบว่า ได้เปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase แล้ว
- เพิ่มแฟล็ก
-ObjCลงในส่วน Other Linker Flags ของการตั้งค่าบิลด์ของเป้าหมาย - (macOS เท่านั้น) ใน
Info.plistให้เพิ่มคีย์NSApplicationCrashOnExceptionsและตั้งค่าเป็นYES - เมื่อเสร็จแล้ว Xcode จะเริ่มจับคู่ข้อมูลและดาวน์โหลด ทรัพยากร Dependency ในเบื้องหลังโดยอัตโนมัติ
https://github.com/firebase/firebase-ios-sdk.git
จากนั้นกำหนดค่าโมดูล Firebase ดังนี้
นำเข้าโมดูล Firebase ในโครงสร้าง
AppหรือUIApplicationDelegateSwift
import Firebase
Objective-C
@import Firebase;
กำหนดค่าอินสแตนซ์ที่แชร์ของ
FirebaseAppซึ่งโดยปกติจะอยู่ในเมธอดapplication(_:didFinishLaunchingWithOptions:)ของตัวแทนแอปSwift
// Use the Firebase library to configure APIs. FirebaseApp.configure()
Objective-C
// Use the Firebase library to configure APIs. [FIRApp configure];
ขั้นตอนที่ 2: ตั้งค่า Xcode ให้อัปโหลดไฟล์ dSYM โดยอัตโนมัติ
เพื่อให้สร้างรายงานข้อขัดข้องที่อ่านได้ Crashlytics ต้องใช้ไฟล์ ดีบักซิมโบล (dSYM) ของโปรเจ็กต์ ขั้นตอนต่อไปนี้จะอธิบายวิธีกำหนดค่า Xcode ให้สร้าง dSYM ประมวลผล และอัปโหลดไฟล์โดยอัตโนมัติทุกครั้งที่คุณสร้างแอป
เปิดพื้นที่ทำงาน Xcode ของโปรเจ็กต์ แล้วเลือกไฟล์โปรเจ็กต์ในแถบนำทางด้านซ้าย
เลือกเป้าหมายบิลด์หลักจากรายการ TARGETS
คลิกแท็บ Build Settings แล้วทำตามขั้นตอนต่อไปนี้เพื่อให้ Xcode สร้าง dSYM สำหรับบิลด์
คลิก All แล้วค้นหา
debug information formatตั้งค่า Debug Information Format เป็น
DWARF with dSYM Fileสำหรับบิลด์ทุกประเภท
คลิกแท็บ Build Phases แล้วทำตามขั้นตอนต่อไปนี้เพื่อให้ Xcode ประมวลผล dSYM และอัปโหลดไฟล์ได้
คลิก > New Run Script Phase
ตรวจสอบว่าเฟส Run Script ใหม่นี้เป็นเฟสบิลด์สุดท้ายของโปรเจ็กต์ ไม่เช่นนั้น Crashlytics จะประมวลผล dSYM อย่างถูกต้องไม่ได้
ขยายส่วน Run Script ใหม่
ในช่องสคริปต์ (อยู่ใต้ป้ายกำกับ Shell) ให้เพิ่มสคริปต์การทำงานต่อไปนี้
สคริปต์นี้จะประมวลผลไฟล์ dSYM ของโปรเจ็กต์และอัปโหลดไฟล์ไปยัง Crashlytics
"${BUILD_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"ในส่วน Input Files ให้เพิ่มเส้นทางของตำแหน่งไฟล์ต่อไปนี้
${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist$(TARGET_BUILD_DIR)/$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/GoogleService-Info.plist
หากคุณมี$(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)
ENABLE_USER_SCRIPT_SANDBOXING=YESและENABLE_DEBUG_DYLIB=YESในการตั้งค่าบิลด์ของโปรเจ็กต์ ให้รวมรายการต่อไปนี้${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}.debug.dylib
ดูข้อมูลโดยละเอียดเพิ่มเติมเกี่ยวกับไฟล์ dSYM และ Crashlytics (รวมถึง วิธีอัปโหลดไฟล์ dSYM ด้วยตนเอง) ได้ที่ รับรายงานข้อขัดข้องที่ยกเลิกการปกปิดแล้ว
ขั้นตอนที่ 3: บังคับให้เกิดข้อขัดข้องในการทดสอบเพื่อตั้งค่าให้เสร็จสมบูรณ์
หากต้องการตั้งค่า Crashlytics ให้เสร็จสมบูรณ์และดูข้อมูลเริ่มต้นใน Crashlytics แดชบอร์ดของ Firebase คอนโซล คุณต้องบังคับให้เกิด ข้อขัดข้องในการทดสอบ
เพิ่มโค้ดลงในแอปที่คุณใช้บังคับให้เกิดข้อขัดข้องในการทดสอบได้
คุณสามารถใช้โค้ดต่อไปนี้เพื่อเพิ่มปุ่มลงในแอป ซึ่งเมื่อกดแล้วจะทำให้เกิดข้อขัดข้อง ปุ่มนี้มีป้ายกำกับว่า "Test Crash"
SwiftUI
Button("Crash") { fatalError("Crash was triggered") }
UIKit
Swift
import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. let button = UIButton(type: .roundedRect) button.frame = CGRect(x: 20, y: 50, width: 100, height: 30) button.setTitle("Test Crash", for: []) button.addTarget(self, action: #selector(self.crashButtonTapped(_:)), for: .touchUpInside) view.addSubview(button) } @IBAction func crashButtonTapped(_ sender: AnyObject) { let numbers = [0] let _ = numbers[1] } }
Objective-C
#import "ViewController.h" @implementation ViewController ‐ (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; button.frame = CGRectMake(20, 50, 100, 30); [button setTitle:@"Test Crash" forState:UIControlStateNormal]; [button addTarget:self action:@selector(crashButtonTapped:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:button]; } ‐ (IBAction)crashButtonTapped:(id)sender { @[][1]; } @end
สร้างและเรียกใช้แอปใน Xcode โดยยกเลิกการเชื่อมต่อดีบักเกอร์ Xcode
คลิก Build and then run the current scheme เพื่อสร้างแอปในอุปกรณ์ทดสอบหรือ เครื่องจำลอง
รอจนกว่าแอปจะทำงาน แล้วคลิก Stop running the scheme or action เพื่อปิดอินสแตนซ์เริ่มต้นของแอป อินสแตนซ์เริ่มต้นนี้มีดีบักเกอร์ที่รบกวน Crashlytics
บังคับให้เกิดข้อขัดข้องในการทดสอบเพื่อส่งรายงานข้อขัดข้องแรกของแอป โดยทำดังนี้
เปิดแอปจากหน้าจอหลักของอุปกรณ์ทดสอบหรือเครื่องจำลอง
ในแอป ให้กดปุ่ม "Test Crash" ที่คุณเพิ่มโดยใช้โค้ดด้านบน
หลังจากแอปขัดข้อง ให้เรียกใช้แอปอีกครั้งจาก Xcode เพื่อให้แอปส่งรายงานข้อขัดข้องไปยัง Firebase ได้
ในคอนโซล Firebase ให้ไปที่แดชบอร์ด DevOps & Engagement > Crashlytics เพื่อตรวจสอบรายงานข้อขัดข้องในการทดสอบ
หากรีเฟรชคอนโซลแล้วแต่ยังไม่เห็นข้อขัดข้องในการทดสอบ หลังจากผ่านไป 5 นาที ให้เปิดใช้การบันทึกการดีบัก เพื่อดูว่าแอปส่งรายงานข้อขัดข้องหรือไม่
เพียงเท่านี้ Crashlytics กำลังตรวจสอบข้อขัดข้องในแอปของคุณแล้ว ไปที่แดชบอร์ด Crashlytics เพื่อดูและตรวจสอบรายงานและสถิติทั้งหมด
ขั้นตอนถัดไป
ปรับแต่งการตั้งค่ารายงานข้อขัดข้อง โดยเพิ่มการรายงานแบบเลือกใช้ บันทึก คีย์ และการติดตามข้อผิดพลาดที่ไม่ร้ายแรง
ส่งออกข้อมูลไปยัง BigQuery หรือ Cloud Logging เพื่อการวิเคราะห์ขั้นสูงและฟีเจอร์ต่างๆ เช่น การค้นหาข้อมูล การสร้างแดชบอร์ดที่กำหนดเอง และการตั้งค่าการแจ้งเตือนที่กำหนดเอง