Mulai Menggunakan Firebase Crashlytics


Panduan memulai ini menjelaskan cara menyiapkan Firebase Crashlytics di aplikasi Anda dengan Firebase Crashlytics SDK sehingga Anda bisa mendapatkan laporan error yang komprehensif di Firebase console.

Penyiapan Crashlytics memerlukan tugas di Firebase console dan IDE Anda (seperti menambahkan file konfigurasi Firebase dan Crashlytics SDK). Untuk menyelesaikan penyiapan, paksa error pengujian agar Anda dapat mengirim laporan error pertama ke Firebase.

Sebelum memulai

  1. Tambahkan Firebase ke project Apple jika Anda belum melakukannya. Jika tidak memiliki aplikasi Apple, Anda dapat mendownload aplikasi contoh.

  2. Direkomendasikan: Untuk mendapatkan log breadcrumb secara otomatis guna memahami tindakan pengguna yang menyebabkan peristiwa error, non-fatal, atau ANR, Anda harus mengaktifkan Google Analytics di project Firebase Anda.

    • Jika project Firebase yang ada belum mengaktifkan Google Analytics, Anda dapat mengaktifkan Google Analytics dari tab Integrations di > Project settings di Firebase console.

    • Jika Anda membuat project Firebase baru, aktifkan Google Analytics selama alur kerja pembuatan project.

    Perhatikan bahwa log breadcrumb tersedia untuk semua platform Apple yang didukung oleh Crashlytics, kecuali watchOS.

Langkah 1: Tambahkan Crashlytics SDK ke aplikasi Anda

Gunakan Swift Package Manager untuk menginstal dan mengelola dependensi Firebase.

  1. Di Xcode, dengan project aplikasi Anda dalam keadaan terbuka, buka File > Add Packages.
  2. Saat diminta, tambahkan repositori SDK platform Apple Firebase:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Pilih library Crashlytics.
  5. Untuk memanfaatkan log breadcrumb, tambahkan juga Firebase SDK untuk Google Analytics ke aplikasi Anda. Pastikan Google Analytics diaktifkan di project Firebase Anda.
  6. Tambahkan flag -ObjC ke bagian Other Linker Flags pada setelan build target Anda.
  7. (Khusus macOS) Di Info.plist, tambahkan kunci NSApplicationCrashOnExceptions, lalu setel ke YES.
  8. Setelah selesai, Xcode akan otomatis mulai me-resolve dan mendownload dependensi Anda di latar belakang.

Selanjutnya, konfigurasikan modul Firebase:

  1. Impor modul Firebase di struktur App atau UIApplicationDelegate Anda:

    Swift

    import Firebase

    Objective-C

    @import Firebase;
  2. Konfigurasikan instance bersama FirebaseApp yang biasanya ada dalam metode application(_:didFinishLaunchingWithOptions:) aplikasi Anda:

    Swift

    // Use the Firebase library to configure APIs.
    FirebaseApp.configure()

    Objective-C

    // Use the Firebase library to configure APIs.
    [FIRApp configure];

Langkah 2: Siapkan Xcode untuk otomatis mengupload file dSYM

Untuk menghasilkan laporan error yang dapat dibaca manusia, Crashlytics memerlukan file simbol debug (dSYM) project Anda. Langkah-langkah berikut menjelaskan cara mengonfigurasi Xcode agar otomatis menghasilkan, memproses, dan mengupload file dSYM setiap kali Anda membangun aplikasi.

  1. Buka ruang kerja Xcode pada project Anda, lalu pilih file project-nya di navigator kiri.

  2. Dari daftar TARGETS, pilih target build utama Anda.

  3. Klik tab Build Settings, lalu selesaikan langkah-langkah berikut sehingga Xcode menghasilkan dSYM untuk build Anda.

    1. Klik All, lalu cari debug information format.

    2. Setel Debug Information Format ke DWARF with dSYM File untuk semua jenis build.

  4. Klik tab Build Phases, lalu selesaikan langkah-langkah berikut sehingga Xcode dapat memproses dan mengupload file dSYM.

    1. Klik > New Run Script Phase.

      Pastikan fase Run Script baru ini adalah fase build terakhir project Anda; jika tidak, Crashlytics tidak akan dapat memproses dSYM dengan benar.

    2. Perluas bagian Run Script baru.

    3. Di kolom skrip (terletak di bawah label Shell), tambahkan skrip pengoperasian berikut.

      Skrip ini memproses file dSYM project dan menguploadnya ke Crashlytics.

      "${BUILD_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"
    4. Di bagian Input Files, tambahkan jalur untuk lokasi file berikut:

      ${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)

Untuk mendapatkan informasi selengkapnya tentang file dSYM dan Crashlytics (termasuk cara mengupload file dSYM secara manual), buka artikel Mendapatkan laporan error yang di-deobfuscate.

Langkah 3: Paksa error pengujian untuk menyelesaikan penyiapan

Untuk menyelesaikan penyiapan Crashlytics dan melihat data awal di dasbor Crashlytics pada Firebase console, Anda harus memaksa error pengujian.

  1. Tambahkan kode ke aplikasi yang dapat Anda gunakan untuk memaksa error pengujian.

    Anda dapat menggunakan kode berikut untuk menambahkan tombol ke aplikasi Anda yang, saat ditekan, akan menyebabkan error. Tombol tersebut diberi label "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
  2. Bangun dan jalankan aplikasi di Xcode saat debugger Xcode diputuskan koneksinya.

    1. Klik Build and then run the current scheme untuk membangun aplikasi Anda di simulator atau perangkat pengujian.

    2. Tunggu hingga aplikasi Anda berjalan, lalu klik Stop running the scheme or action untuk menutup instance awal aplikasi Anda. Instance awal ini memiliki debugger yang mengganggu Crashlytics.

  3. Paksa error pengujian untuk mengirimkan laporan error pertama aplikasi:

    1. Buka aplikasi dari layar utama simulator atau perangkat pengujian Anda.

    2. Di aplikasi Anda, tekan tombol "Test Crash" yang telah ditambahkan menggunakan kode di atas.

    3. Setelah aplikasi Anda mengalami error, jalankan lagi dari Xcode sehingga aplikasi Anda dapat mengirimkan laporan error ke Firebase.

  4. Buka dasbor Crashlytics di Firebase console untuk melihat error pengujian Anda.

    Jika Anda sudah me-refresh konsol dan masih tidak melihat error pengujian setelah lima menit, aktifkan logging debug untuk melihat apakah aplikasi Anda mengirim laporan error atau tidak.


Dan selesai! Crashlytics kini memantau aplikasi Anda untuk menemukan error. Buka dasbor Crashlytics untuk melihat dan menyelidiki semua laporan dan statistik Anda.

Langkah berikutnya