Questa guida rapida descrive come configurare Firebase Crashlytics nella tua app con l'SDK Firebase Crashlytics in modo da poter ottenere report sugli arresti anomali completi nella console Firebase.
La configurazione di Crashlytics richiede attività sia nella console Firebase sia nel tuo IDE (come l'aggiunta di un file di configurazione Firebase e dell'SDK Crashlytics). Per completare la configurazione, devi forzare un arresto anomalo di test per inviare il primo report sugli arresti anomali a Firebase.
Prima di iniziare
Se non l'hai ancora fatto, aggiungi Firebase al tuo progetto Apple. Se non hai un'app Apple, puoi scaricare un'app di esempio.
Consigliato: per ottenere automaticamente i log dei breadcrumb per comprendere le azioni dell'utente che hanno portato a un evento di arresto anomalo, non irreversibile o ANR, devi attivare Google Analytics nel tuo progetto Firebase.
Se il tuo progetto Firebase esistente non ha Google Analytics abilitato, puoi abilitare Google Analytics dalla scheda Integrazioni di
nella console > Impostazioni progettoFirebase. Se crei un nuovo progetto Firebase, abilita Google Analytics durante il flusso di lavoro di creazione del progetto.
Tieni presente che i log breadcrumb sono disponibili per tutte le piattaforme Apple supportate da Crashlytics, ad eccezione di watchOS.
Passaggio 1: aggiungi l'SDK Crashlytics alla tua app
Utilizza Swift Package Manager per installare e gestire le dipendenze di Firebase.
- In Xcode, con il progetto dell'app aperto, vai a File > Add Packages (File > Aggiungi pacchetti).
- Quando richiesto, aggiungi il repository dell'SDK delle piattaforme Apple di Firebase:
- Scegli la raccolta Crashlytics.
- Per sfruttare i log breadcrumb, aggiungi anche l'SDK Firebase per Google Analytics alla tua app. Assicurati che Google Analytics sia attivato nel tuo progetto Firebase.
- Aggiungi il flag
-ObjC
alla sezione Altri flag del linker delle impostazioni di build del target. - (Solo macOS) In
Info.plist
, aggiungi la chiaveNSApplicationCrashOnExceptions
e impostala suYES
. - Al termine, Xcode inizierà automaticamente a risolvere e a scaricare le tue dipendenze in background.
https://github.com/firebase/firebase-ios-sdk.git
A questo punto, configura il modulo Firebase:
Importa il modulo Firebase nella struttura
App
o inUIApplicationDelegate
:Swift
import Firebase
Objective-C
@import Firebase;
Configura un'istanza condivisa di
FirebaseApp
, in genere nel metodoapplication(_:didFinishLaunchingWithOptions:)
del delegato dell'app:Swift
// Use the Firebase library to configure APIs. FirebaseApp.configure()
Objective-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 ha bisogno dei file di simboli di debug (dSYM) del tuo progetto. I passaggi seguenti descrivono come configurare Xcode per produrre, elaborare e caricare automaticamente i file dSYM ogni volta che crei la tua app.
Apri il workspace Xcode del progetto, quindi seleziona il file di progetto nel navigatore a sinistra.
Nell'elenco TARGETS (DESTINAZIONI), seleziona la destinazione di build principale.
Fai clic sulla scheda Impostazioni build, poi completa i seguenti passaggi in modo che Xcode produca file dSYM per le tue build.
Fai clic su Tutti, quindi cerca
debug information format
.Imposta Formato informazioni di debug su
DWARF with dSYM File
per tutti i tipi di build.
Fai clic sulla scheda Build Phases, quindi completa i passaggi seguenti in modo che Xcode possa elaborare i tuoi dSYM e caricare i file.
Fai clic su
> Nuova fase di esecuzione dello script.Assicurati che questa nuova fase Esegui script sia l'ultima fase di build del progetto, altrimenti Crashlytics non può elaborare correttamente i dSYM.
Espandi la nuova sezione Esegui script.
Nel campo dello script (situato sotto l'etichetta Shell), aggiungi il seguente script di esecuzione.
Questo script elabora i file dSYM del tuo progetto e li carica su Crashlytics.
"${BUILD_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"
Nella sezione Input Files (File di input), aggiungi i percorsi delle 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
Se hai$(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)
ENABLE_USER_SCRIPT_SANDBOXING=YES
eENABLE_DEBUG_DYLIB=YES
nelle impostazioni di build del progetto, includi quanto segue:${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}.debug.dylib
Per informazioni più dettagliate sui file dSYM e su Crashlytics (incluso come caricare manualmente i file dSYM), visita Ricevere report 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 Crashlytics della console Firebase, devi forzare un arresto anomalo di test.
Aggiungi alla tua app un codice che puoi utilizzare per forzare un arresto anomalo di test.
Puoi utilizzare il seguente codice per aggiungere un pulsante alla tua app che, quando viene premuto, causa un arresto anomalo. Il pulsante è etichettato "Test arresto anomalo".
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
Crea ed esegui l'app in Xcode con il debugger Xcode disconnesso.
Fai clic su
Build (Crea) e poi Run (Esegui) lo schema attuale per creare la tua app su un dispositivo di test o un simulatore.Attendi che l'app sia in esecuzione, poi fai clic su Crashlytics.
Interrompi l'esecuzione dello schema o dell'azione per chiudere l'istanza iniziale dell'app. Questa istanza iniziale includeva il debugger che interferisce con
Forza l'arresto anomalo del test per inviare il primo report sugli arresti anomali della tua app:
Apri l'app dalla schermata Home del dispositivo di test o del simulatore.
Nell'app, premi il pulsante "Test Crash" che hai aggiunto utilizzando il codice sopra.
Dopo l'arresto anomalo dell'app, eseguila di nuovo da Xcode in modo che possa inviare il report sugli arresti anomali a Firebase.
Vai alla dashboard Crashlytics della console Firebase per visualizzare l'arresto anomalo del test.
Se hai aggiornato la console e non vedi ancora l'arresto anomalo del test dopo cinque minuti, attiva la registrazione di debug per verificare se la tua app invia report sugli arresti anomali.
E questo è tutto. Crashlytics ora monitora la tua app per rilevare eventuali arresti anomali. Visita la dashboard Crashlytics per visualizzare e analizzare tutti i tuoi report e le tue statistiche.
Passaggi successivi
- Personalizza la configurazione dei report sugli arresti anomali aggiungendo report con consenso esplicito, log, chiavi e monitoraggio degli errori non irreversibili.