บทแนะนำฉบับย่อนี้จะอธิบายวิธีตั้งค่า Firebase Crashlytics ในแอปด้วย Firebase Crashlytics SDK เพื่อให้คุณได้รับรายงานข้อขัดข้องที่ครอบคลุมในคอนโซล Firebase
การตั้งค่า Crashlytics ต้องใช้ทั้งงานในคอนโซล Firebase และ IDE (เช่น การเพิ่มไฟล์การกําหนดค่า Firebase และ Crashlytics SDK) ในการตั้งค่าให้เสร็จสิ้น คุณจะต้องบังคับให้มีข้อขัดข้องจากการทดสอบเพื่อส่ง ไปยัง Firebase
ก่อนเริ่มต้น
เพิ่ม Firebase ลงในโปรเจ็กต์ Apple หากยังไม่ได้ดำเนินการ หากไม่มีแอป Apple คุณสามารถดาวน์โหลดแอปตัวอย่าง
แนะนํา: หากต้องการรับบันทึกเบรดครัมบ์โดยอัตโนมัติเพื่อทำความเข้าใจการดําเนินการของผู้ใช้ที่ทําให้เกิดข้อขัดข้อง เหตุการณ์ที่ไม่ใช่ข้อขัดข้องร้ายแรง หรือ ANR คุณจะต้องเปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase
หากโปรเจ็กต์ Firebase ที่มีอยู่ไม่มี Google Analytics เปิดใช้อยู่ คุณสามารถเปิดใช้ Google Analytics ได้จาก แท็บการผสานรวมของ
ในคอนโซล การตั้งค่าโปรเจ็กต์Firebase หากจะสร้างโปรเจ็กต์ Firebase ใหม่ ให้เปิดใช้ Google Analytics ในระหว่างขั้นตอนการสร้างโปรเจ็กต์
โปรดทราบว่าบันทึกเบรดครัมบ์พร้อมใช้งานสำหรับแพลตฟอร์ม Apple ทั้งหมดที่ Crashlytics รองรับ ยกเว้น watchOS
ขั้นตอนที่ 1: เพิ่ม SDK ของ Crashlytics ลงในแอป
ใช้ Swift Package Manager เพื่อติดตั้งและจัดการทรัพยากร Dependency ของ Firebase
- เปิดโปรเจ็กต์แอปใน Xcode แล้วไปที่ไฟล์ > เพิ่มแพ็กเกจ
- เมื่อได้รับข้อความแจ้ง ให้เพิ่มที่เก็บ Firebase SDK สำหรับแพลตฟอร์ม 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 ของโปรเจ็กต์ แล้วเลือกไฟล์โปรเจ็กต์ใน ตัวนำทางด้านซ้าย
จากรายการเป้าหมาย ให้เลือกเป้าหมายบิลด์หลัก
คลิกแท็บการตั้งค่าการสร้าง แล้วทำตามขั้นตอนต่อไปนี้เพื่อให้ Xcode สร้าง dSYM สำหรับบิลด์
คลิกทั้งหมด แล้วค้นหา
debug information format
ตั้งค่ารูปแบบข้อมูลการแก้ไขข้อบกพร่องเป็น
DWARF with dSYM File
สำหรับประเภทบิลด์ทั้งหมด
คลิกแท็บสร้างระยะ จากนั้นทำตามขั้นตอนต่อไปนี้เพื่อให้ Xcode สามารถประมวลผล dSYM และอัปโหลดไฟล์
คลิก
> ระยะการเรียกใช้สคริปต์ใหม่ตรวจสอบว่าระยะเรียกใช้สคริปต์ใหม่นี้เป็นระยะการสร้างล่าสุดของโปรเจ็กต์ มิเช่นนั้น Crashlytics จะประมวลผล dSYM อย่างไม่ถูกต้อง
ขยายส่วนเรียกใช้สคริปต์ใหม่
ในช่องสคริปต์ (ใต้ป้ายกำกับ 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 เพื่อดูและตรวจสอบรายงานและสถิติทั้งหมด
ขั้นตอนถัดไป
- ปรับแต่งการตั้งค่ารายงานข้อขัดข้องโดยเพิ่มการรายงานแบบเลือกใช้ บันทึก คีย์ และการติดตามข้อผิดพลาดที่ไม่ร้ายแรง