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