การเริ่มต้นอย่างรวดเร็วนี้อธิบายวิธีตั้งค่า Firebase Crashlytics ในแอปด้วย Firebase Crashlytics SDK เพื่อให้คุณได้รับรายงานข้อขัดข้องที่ครอบคลุมในคอนโซล Firebase
การตั้งค่า Crashlytics ต้องมีงานทั้งในคอนโซล Firebase และ IDE ของคุณ (เช่น การเพิ่มไฟล์การกำหนดค่า Firebase และ Crashlytics SDK) หากต้องการตั้งค่าให้เสร็จ คุณจะต้องบังคับให้มีข้อขัดข้องในการทดสอบเพื่อส่งรายงานข้อขัดข้องฉบับแรกไปยัง Firebase
ก่อนเริ่มต้น
เพิ่ม Firebase ลงในโปรเจ็กต์ Apple หากยังไม่ได้เพิ่ม หากไม่มีแอป Apple คุณสามารถดาวน์โหลด แอปตัวอย่างได้
แนะนำ: หากต้องการรับบันทึกเบรดครัมบ์โดยอัตโนมัติ คุณต้องเปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase เพื่อทำความเข้าใจการดำเนินการของผู้ใช้ที่นำไปสู่เหตุการณ์ข้อขัดข้อง ไม่ร้ายแรง หรือ ANR
หากโปรเจ็กต์ Firebase ที่มีอยู่ไม่ได้เปิดใช้ Google Analytics คุณเปิดใช้ Google Analytics ได้จากแท็บการผสานรวมของ
ในคอนโซล Firebase > การตั้งค่าโปรเจ็กต์ หากคุณกำลังสร้างโปรเจ็กต์ Firebase ใหม่ ให้เปิดใช้ Google Analytics ในระหว่างกระบวนการสร้างโปรเจ็กต์
โปรดทราบว่าบันทึกเบรดครัมบ์มีให้ใช้งานในทุกแพลตฟอร์ม Apple ที่รองรับโดย Crashlytics ยกเว้น watchOS
ขั้นตอนที่ 1: เพิ่ม Crashlytics SDK ลงในแอป
ใช้ Swift Package Manager เพื่อติดตั้งและจัดการทรัพยากร Dependency ของ Firebase
- เปิดโปรเจ็กต์แอปใน Xcode แล้วไปที่ไฟล์ > เพิ่มแพ็กเกจ
- เมื่อได้รับข้อความแจ้ง ให้เพิ่มที่เก็บ SDK สำหรับแพลตฟอร์ม Firebase ของ Apple ดังนี้
- เลือกไลบรารี Crashlytics
- หากต้องการใช้ประโยชน์จาก บันทึกเบรดครัมบ์ ให้เพิ่ม Firebase SDK สำหรับ Google Analytics ลงในแอปด้วย และตรวจสอบว่า เปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase แล้ว
- เพิ่มแฟล็ก
-ObjC
ลงในส่วนแฟล็ก Linker อื่นๆ ของการตั้งค่าบิลด์ของเป้าหมาย - (macOS เท่านั้น) ใน
Info.plist
ให้เพิ่มคีย์NSApplicationCrashOnExceptions
และตั้งค่าเป็นYES
- เมื่อเสร็จสิ้นแล้ว Xcode จะเริ่มแก้ปัญหาและดาวน์โหลดทรัพยากร Dependency ในเบื้องหลังโดยอัตโนมัติ
https://github.com/firebase/firebase-ios-sdk.git
ถัดไป ให้กำหนดค่าโมดูล Firebase ดังนี้
นำเข้าโมดูล Firebase ในโครงสร้าง
App
หรือUIApplicationDelegate
ดังนี้Swift
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 ของโปรเจ็กต์ แล้วเลือกไฟล์โปรเจ็กต์ในแถบนำทางด้านซ้าย
จากรายการเป้าหมาย ให้เลือกเป้าหมายบิลด์หลัก
คลิกแท็บ Build Settings จากนั้นทำตามขั้นตอนต่อไปนี้เพื่อให้ Xcode สร้าง dSYM สำหรับบิลด์ของคุณ
คลิกทั้งหมด แล้วค้นหา
debug information format
ตั้งค่ารูปแบบข้อมูลการแก้ไขข้อบกพร่องเป็น
DWARF with dSYM File
สําหรับประเภทบิลด์ทั้งหมด
คลิกแท็บเฟสของการสร้าง จากนั้นทำตามขั้นตอนต่อไปนี้เพื่อให้ Xcode สามารถประมวลผล dSYM และอัปโหลดไฟล์
คลิก
> เรียกใช้ระยะสคริปต์ใหม่ตรวจสอบว่าระยะเรียกใช้สคริปต์ใหม่นี้เป็นเฟสบิลด์สุดท้ายของโปรเจ็กต์ มิเช่นนั้น Crashlytics จะไม่สามารถประมวลผล dSYM ได้อย่างถูกต้อง
ขยายส่วน Run Script ใหม่
ในช่องสคริปต์ (อยู่ใต้ป้ายกำกับ Shell) ให้เพิ่มสคริปต์การเรียกใช้ต่อไปนี้
สคริปต์นี้จะประมวลผลไฟล์ dSYM ของโปรเจ็กต์และอัปโหลดไฟล์ไปยัง Crashlytics
"${BUILD_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"
ในส่วนไฟล์อินพุต ให้เพิ่มเส้นทางสำหรับตำแหน่งของไฟล์ต่อไปนี้
${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)
ดูข้อมูลโดยละเอียดเพิ่มเติมเกี่ยวกับไฟล์ dSYM และ Crashlytics (รวมถึงวิธีอัปโหลดไฟล์ dSYM ด้วยตนเอง) ได้ที่รับรายงานข้อขัดข้องที่ถอดรหัสซอร์สโค้ดที่สร้างความสับสน
ขั้นตอนที่ 3: บังคับให้การทดสอบขัดข้องเพื่อตั้งค่าให้เสร็จสิ้น
คุณต้องบังคับให้การทดสอบขัดข้องเพื่อตั้งค่า Crashlytics ให้เสร็จสิ้นและดูข้อมูลเบื้องต้นในแดชบอร์ดของ Crashlytics ของคอนโซล Firebase
เพิ่มโค้ดลงในแอปของคุณที่ใช้บังคับให้การทดสอบขัดข้องได้
คุณใช้โค้ดต่อไปนี้เพื่อเพิ่มปุ่มลงในแอปได้ ซึ่งจะทำให้ระบบขัดข้องเมื่อกดปุ่ม โดยปุ่มจะมีป้ายกำกับว่า "ทดสอบข้อขัดข้อง"
SwiftUI
Button("Crash") { fatalError("Crash was triggered") }
ชุดเครื่องมือ UI
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
คลิก
สร้างแล้วเรียกใช้รูปแบบปัจจุบันเพื่อสร้างแอปในอุปกรณ์ทดสอบหรือเครื่องจำลองรอจนกว่าแอปจะทำงาน แล้วคลิก
หยุดเรียกใช้รูปแบบหรือการดำเนินการเพื่อปิดอินสแตนซ์เริ่มต้นของแอป อินสแตนซ์เริ่มต้นนี้มีโปรแกรมแก้ไขข้อบกพร่องที่รบกวน Crashlytics
บังคับใช้ข้อขัดข้องจากการทดสอบเพื่อส่งรายงานข้อขัดข้องครั้งแรกของแอป
เปิดแอปจากหน้าจอหลักของอุปกรณ์ทดสอบหรือเครื่องจำลอง
ในแอป ให้กดปุ่ม "ทดสอบข้อขัดข้อง" ที่เพิ่มไว้โดยใช้โค้ดด้านบน
หลังจากที่แอปขัดข้อง ให้เรียกใช้อีกครั้งจาก Xcode เพื่อให้แอปส่งรายงานข้อขัดข้องไปยัง Firebase ได้
ไปที่แดชบอร์ด Crashlytics ของคอนโซล Firebase เพื่อดูข้อขัดข้องในการทดสอบ
หากคุณรีเฟรชคอนโซลแล้ว แต่ยังไม่เห็นข้อขัดข้องจากการทดสอบหลังจากผ่านไป 5 นาที ให้เปิดใช้การบันทึกการแก้ไขข้อบกพร่อง เพื่อดูว่าแอปส่งรายงานข้อขัดข้องหรือไม่
เท่านี้ก็เรียบร้อย Crashlytics กำลังตรวจสอบแอปของคุณเพื่อหาข้อขัดข้อง ไปที่แดชบอร์ดของ Crashlytics เพื่อดูและตรวจสอบรายงานและสถิติทั้งหมด
ขั้นตอนถัดไป
- ปรับแต่งการตั้งค่ารายงานข้อขัดข้อง ด้วยการเพิ่มการรายงานการเลือกรับ บันทึก คีย์ และการติดตามข้อผิดพลาดที่ไม่ร้ายแรง