เริ่มต้นใช้งาน Firebase Crashlytics


คู่มือเริ่มต้นฉบับย่อนี้อธิบายวิธีตั้งค่า Firebase Crashlytics ในแอป ด้วย SDK ของ Firebase Crashlytics เพื่อให้คุณได้รับรายงานข้อขัดข้องที่ครอบคลุม ในคอนโซล Firebase

การตั้งค่า Crashlytics ต้องทำทั้งในคอนโซล Firebase และ IDE (เช่น การเพิ่มไฟล์กำหนดค่า Firebase และ Crashlytics SDK) หากต้องการตั้งค่าให้เสร็จสมบูรณ์ คุณจะต้องบังคับให้เกิดข้อขัดข้องเพื่อส่งรายงานข้อขัดข้องแรกไปยัง Firebase

ก่อนเริ่มต้น

  1. เพิ่ม Firebase ในโปรเจ็กต์ Apple หากยังไม่ได้ดำเนินการ หากไม่มีแอป Apple คุณสามารถดาวน์โหลดแอปตัวอย่างได้

  2. แนะนํา: หากต้องการรับบันทึกเส้นทางโดยอัตโนมัติ เพื่อทําความเข้าใจการกระทําของผู้ใช้ที่นําไปสู่เหตุการณ์ข้อขัดข้อง ข้อผิดพลาดที่ไม่ร้ายแรง หรือ 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

  1. เปิดโปรเจ็กต์แอปใน Xcode แล้วไปที่File > Add Packages
  2. เมื่อได้รับข้อความแจ้ง ให้เพิ่มที่เก็บ SDK ของแพลตฟอร์ม Apple ของ Firebase ดังนี้
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. เลือกCrashlytics คลัง
  5. หากต้องการใช้ประโยชน์จาก บันทึกเส้นทาง ให้เพิ่ม Firebase SDK สําหรับ Google Analytics ลงในแอปด้วย ตรวจสอบว่า เปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase
  6. เพิ่มแฟล็ก -ObjC ลงในส่วนแฟล็ก Linker อื่นๆ ของการตั้งค่าบิลด์ของเป้าหมาย
  7. (macOS เท่านั้น) ใน Info.plist ให้เพิ่มคีย์ NSApplicationCrashOnExceptions แล้วตั้งค่าเป็น YES
  8. เมื่อเสร็จแล้ว Xcode จะเริ่มจับคู่ข้อมูลและดาวน์โหลดทรัพยากร Dependency ในเบื้องหลังโดยอัตโนมัติ

จากนั้นกำหนดค่าโมดูล Firebase โดยทำดังนี้

  1. นำเข้าโมดูล Firebase ใน App struct หรือ UIApplicationDelegate

    Swift

    import Firebase

    Objective-C

    @import Firebase;
  2. กำหนดค่า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 ประมวลผล และอัปโหลดไฟล์โดยอัตโนมัติทุกครั้งที่คุณสร้างแอป

  1. เปิดพื้นที่ทํางาน Xcode ของโปรเจ็กต์ แล้วเลือกไฟล์โปรเจ็กต์ในแถบนำทางด้านซ้าย

  2. เลือกเป้าหมายการบิลด์หลักจากรายการ TARGETS

  3. คลิกแท็บการตั้งค่าการสร้าง แล้วทำตามขั้นตอนต่อไปนี้เพื่อให้ Xcode สร้าง dSYM สำหรับบิลด์ของคุณ

    1. คลิกทั้งหมด แล้วค้นหา debug information format

    2. ตั้งค่ารูปแบบข้อมูลการแก้ไขข้อบกพร่องเป็น DWARF with dSYM File สำหรับบิลด์ทุกประเภท

  4. คลิกแท็บ Build Phases แล้วทำตามขั้นตอนต่อไปนี้เพื่อให้ Xcode ประมวลผล dSYM และอัปโหลดไฟล์ได้

    1. คลิก > New Run Script Phase

      ตรวจสอบว่าเฟสเรียกใช้สคริปต์ใหม่นี้เป็นเฟสการสร้างสุดท้ายของโปรเจ็กต์ มิฉะนั้น Crashlytics จะประมวลผล dSYM อย่างถูกต้องไม่ได้

    2. ขยายส่วนเรียกใช้สคริปต์ใหม่

    3. ในช่องสคริปต์ (อยู่ใต้ป้ายกำกับShell) ให้เพิ่ม สคริปต์การเรียกใช้ต่อไปนี้

      สคริปต์นี้จะประมวลผลไฟล์ dSYM ของโปรเจ็กต์และอัปโหลดไฟล์ไปยัง Crashlytics

      "${BUILD_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"
    4. ในส่วนไฟล์อินพุต ให้เพิ่มเส้นทางไปยังตำแหน่งของไฟล์ต่อไปนี้

      ${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 คุณต้องบังคับให้เกิดข้อขัดข้องในการทดสอบ

  1. เพิ่มโค้ดลงในแอปที่คุณใช้เพื่อบังคับให้เกิดข้อขัดข้องในการทดสอบได้

    คุณใช้โค้ดต่อไปนี้เพื่อเพิ่มปุ่มลงในแอปได้ ซึ่งเมื่อ กดแล้วจะทำให้เกิดข้อขัดข้อง ปุ่มนี้มีป้ายกำกับว่า "ทดสอบการขัดข้อง"

    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
  2. สร้างและเรียกใช้แอปใน Xcode โดยยกเลิกการเชื่อมต่อดีบักเกอร์ Xcode

    1. คลิกสร้าง แล้ว เรียกใช้ Scheme ปัจจุบันเพื่อสร้างแอปในอุปกรณ์ทดสอบหรือ โปรแกรมจำลอง

    2. รอจนกว่าแอปจะทำงาน แล้วคลิกหยุดเรียกใช้ Scheme หรือ Action เพื่อปิดอินสแตนซ์เริ่มต้นของแอป อินสแตนซ์เริ่มต้นนี้ มีดีบักเกอร์ที่รบกวน Crashlytics

  3. บังคับให้เกิดข้อขัดข้องในการทดสอบเพื่อส่งรายงานข้อขัดข้องแรกของแอป โดยทำดังนี้

    1. เปิดแอปจากหน้าจอหลักของอุปกรณ์ทดสอบหรือโปรแกรมจำลอง

    2. ในแอป ให้กดปุ่ม "ทดสอบข้อขัดข้อง" ที่คุณเพิ่มโดยใช้โค้ดด้านบน

    3. หลังจากแอปขัดข้อง ให้เรียกใช้แอปอีกครั้งจาก Xcode เพื่อให้แอปส่งรายงานข้อขัดข้องไปยัง Firebase ได้

  4. ไปที่แดชบอร์ด Crashlytics ของคอนโซล Firebase เพื่อดูข้อขัดข้องในการทดสอบ

    หากรีเฟรชคอนโซลแล้ว แต่ยังไม่เห็นข้อขัดข้องที่ทดสอบ หลังจากผ่านไป 5 นาที ให้เปิดใช้การบันทึกการแก้ไขข้อบกพร่อง เพื่อดูว่าแอปส่งรายงานข้อขัดข้องหรือไม่


เพียงเท่านี้ก็เรียบร้อยแล้ว ตอนนี้ Crashlytics กำลังตรวจสอบแอปของคุณเพื่อหาข้อขัดข้อง ไปที่Crashlyticsแดชบอร์ดเพื่อดูและตรวจสอบ รายงานและสถิติทั้งหมด

ขั้นตอนถัดไป