Inizia con Firebase Crashlytics

Questa guida di avvio rapido descrive come configurare Firebase Crashlytics nella tua app con l'SDK Firebase Crashlytics in modo da poter ottenere report completi sugli arresti anomali nella console Firebase.

La configurazione di Crashlytics richiede attività sia nella console Firebase che nel tuo IDE (come l'aggiunta di un file di configurazione Firebase e dell'SDK di Crashlytics). Per completare la configurazione, dovrai forzare un arresto anomalo di prova per inviare il primo rapporto sull'arresto anomalo a Firebase.

Prima di iniziare

  1. Se non l'hai già fatto, aggiungi Firebase al tuo progetto Apple. Se non disponi di un'app Apple, puoi scaricare un'app di esempio .

  2. Consigliato : per ottenere automaticamente i log breadcrumb per comprendere le azioni degli utenti che portano a un arresto anomalo, un evento non fatale o ANR, devi abilitare Google Analytics nel tuo progetto Firebase.

    • Se il tuo progetto Firebase esistente non ha Google Analytics abilitato, puoi abilitare Google Analytics dalla scheda Integrazioni del tuo > Impostazioni progetto nella console Firebase.

    • Se stai creando un nuovo progetto Firebase, abilita Google Analytics durante il flusso di lavoro di creazione del progetto.

    Tieni presente che i registri breadcrumb sono disponibili per tutte le piattaforme Apple supportate da Crashlytics tranne watchOS.

Passaggio 1 : aggiungi l'SDK Crashlytics alla tua app

Utilizza Swift Package Manager per installare e gestire le dipendenze di Firebase.

  1. In Xcode, con il progetto dell'app aperto, vai a File > Add Packages .
  2. Quando richiesto, aggiungi il repository SDK delle piattaforme Apple Firebase:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Scegli la libreria Crashlytics.
  5. Per sfruttare i log breadcrumb , aggiungi anche l'SDK Firebase per Google Analytics alla tua app. Assicurati che Google Analytics sia abilitato nel tuo progetto Firebase.
  6. Aggiungi il flag -ObjC alla sezione Altri flag del linker delle impostazioni di build del tuo target.
  7. (Solo macOS) Nel tuo Info.plist , aggiungi la chiave NSApplicationCrashOnExceptions e impostala su YES .
  8. Al termine, Xcode inizierà automaticamente a risolvere e scaricare le tue dipendenze in background.

Successivamente, configura il modulo Firebase:

  1. Importa il modulo Firebase nella struttura App o UIApplicationDelegate :

    Veloce

    import Firebase

    Obiettivo-C

    @import Firebase;
  2. Configura un'istanza condivisa FirebaseApp , in genere nel metodo application(_:didFinishLaunchingWithOptions:) del delegato dell'app:

    Veloce

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

    Obiettivo-C

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

Passaggio 2 : configura Xcode per caricare automaticamente i file dSYM

Per generare report sugli arresti anomali leggibili, Crashlytics necessita dei file dei simboli di debug (dSYM) del tuo progetto. I passaggi seguenti descrivono come configurare Xcode per produrre automaticamente i tuoi dSYM, elaborarli e caricare i file ogni volta che crei la tua app.

  1. Apri l'area di lavoro Xcode del tuo progetto, quindi seleziona il file di progetto nel navigatore di sinistra.

  2. Dall'elenco TARGETS , seleziona il target di build principale.

  3. Fai clic sulla scheda Impostazioni build , quindi completa i passaggi seguenti in modo che Xcode produca dSYM per le tue build.

    1. Fare clic su Tutto , quindi cercare debug information format .

    2. Imposta il formato delle informazioni di debug su DWARF with dSYM File per tutti i tipi di build.

  4. Fai clic sulla scheda Fasi di creazione , quindi completa i passaggi seguenti in modo che Xcode possa elaborare i tuoi dSYM e caricare i file.

    1. Fare clic su > Nuova fase Esegui script .

      Assicurati che questa nuova fase Esegui script sia l'ultima fase di compilazione del tuo progetto; in caso contrario, Crashlytics non sarà in grado di elaborare correttamente i dSYM.

    2. Espandi la nuova sezione Esegui script .

    3. Nel campo script (situato sotto l'etichetta Shell ), aggiungi il seguente script di esecuzione.

      Questo script elabora i file dSYM del tuo progetto e carica i file su Crashlytics.

      "${BUILD_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"
    4. Nella sezione File di input , aggiungi i percorsi per le posizioni dei seguenti file:

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

Per informazioni più dettagliate sui file dSYM e Crashlytics (incluso come caricare manualmente i file dSYM), visita Ottieni rapporti sugli arresti anomali deoffuscati .

Passaggio 3 : forza un arresto anomalo del test per completare la configurazione

Per completare la configurazione di Crashlytics e visualizzare i dati iniziali nella dashboard di Crashlytics della console Firebase, devi forzare un arresto anomalo del test.

  1. Aggiungi codice alla tua app che puoi utilizzare per forzare un arresto anomalo del test.

    Puoi utilizzare il codice seguente per aggiungere un pulsante alla tua app che, se premuto, provoca un arresto anomalo. Il pulsante è etichettato "Test Crash".

    SwiftUI

    Button("Crash") {
      fatalError("Crash was triggered")
    }
    

    UIKit

    Veloce

    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]
      }
    }
    

    Obiettivo-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. Crea ed esegui la tua app in Xcode con il debugger Xcode disconnesso.

    1. Fai clic su Crea, quindi esegui lo schema corrente per creare la tua app su un dispositivo di test o un simulatore.

    2. Attendi finché l'app non è in esecuzione, quindi fai clic su Interrompi l'esecuzione dello schema o dell'azione per chiudere l'istanza iniziale della tua app. Questa istanza iniziale includeva il debugger che interferisce con Crashlytics.

  3. Forza l'arresto anomalo del test per inviare il primo rapporto sull'arresto anomalo della tua app:

    1. Apri la tua app dalla schermata principale del tuo dispositivo di test o simulatore.

    2. Nella tua app, premi il pulsante "Test Crash" che hai aggiunto utilizzando il codice sopra.

    3. Dopo che l'app si è arrestata in modo anomalo, eseguila di nuovo da Xcode in modo che la tua app possa inviare il rapporto sull'arresto anomalo a Firebase.

  4. Vai alla dashboard Crashlytics della console Firebase per vedere l'arresto anomalo del test.

    Se hai aggiornato la console e non vedi ancora l'arresto anomalo del test dopo cinque minuti, abilita la registrazione del debug per vedere se la tua app sta inviando rapporti sugli arresti anomali.


E questo è tutto! Crashlytics ora monitora gli arresti anomali della tua app. Visita la dashboard di Crashlytics per visualizzare ed esaminare tutti i report e le statistiche.

Prossimi passi