Z tego przewodnika dowiesz się, jak skonfigurować Firebase Crashlytics w aplikacji za pomocą pakietu Firebase Crashlytics SDK, aby otrzymywać w Firebase konsoli szczegółowe raporty o awariach.
Konfigurowanie Crashlytics wymaga wykonania działań zarówno w Firebase konsoli, jak i w IDE (np. dodania pliku konfiguracyjnego Firebase i Crashlytics pakietu SDK). Aby dokończyć konfigurację, musisz wymusić testowe awarie, aby wysłać do Firebase pierwszy raport o awarii.
Zanim zaczniesz
- Jeśli nie korzystasz jeszcze z Firebase, dodaj ją do projektu Apple. Jeśli nie masz aplikacji Apple, możesz pobrać aplikację przykładową. 
- Zalecane: aby automatycznie otrzymywać dzienniki ścieżki i poznawać działania użytkowników, które doprowadziły do awarii, błędu niekrytycznego lub zdarzenia ANR, musisz włączyć Google Analytics w projekcie Firebase. - Jeśli w dotychczasowym projekcie Firebase nie masz włączonej usługi Google Analytics, możesz ją włączyć na karcie Integracje w sekcji - > Ustawienia projektu w konsoli Firebase.Google Analytics
- Jeśli tworzysz nowy projekt Firebase, włącz Google Analytics w trakcie procesu tworzenia projektu. 
 - Pamiętaj, że logi ścieżki są dostępne na wszystkich platformach Apple obsługiwanych przez Crashlytics z wyjątkiem watchOS. 
Krok 1. Dodaj do aplikacji pakiet SDK Crashlytics
Do instalacji zależności Firebase i do zarządzania nimi możesz używać menedżera pakietów Swift.
- Po otwarciu projektu aplikacji wybierz w Xcode opcję File > Add Packages (Plik > Dodaj pakiety).
- Gdy pojawi się prośba, dodaj repozytorium pakietu SDK Firebase na platformy Apple:
- Wybierz bibliotekę Crashlytics.
- Aby korzystać z logów ścieżki, dodaj do aplikacji pakiet SDK Firebase dla Google Analytics. Upewnij się, że w projekcie Firebase Google Analytics jest włączona.
- Dodaj flagę -ObjCdo sekcji Other Linker Flags (Inne flagi linkera) w ustawieniach kompilacji projektu.
- (tylko macOS) W Info.plistdodaj kluczNSApplicationCrashOnExceptionsi ustaw go naYES.
- Gdy skończysz, Xcode zacznie automatycznie wyszukiwać i pobierać zależności w tle.
https://github.com/firebase/firebase-ios-sdk.git
Następnie skonfiguruj moduł Firebase:
- Zaimportuj moduł Firebase w strukturze - Applub- UIApplicationDelegate:- Swift- import Firebase - Objective-C- @import Firebase; 
- Skonfiguruj udostępnione wystąpienie - FirebaseApp, zwykle w metodzie- application(_:didFinishLaunchingWithOptions:)delegata aplikacji:- Swift- // Use the Firebase library to configure APIs. FirebaseApp.configure() - Objective-C- // Use the Firebase library to configure APIs. [FIRApp configure]; 
Krok 2. Skonfiguruj Xcode tak, aby automatycznie przesyłał pliki dSYM
Aby generować czytelne raporty o awariach, Crashlytics potrzebuje plików symboli debugowania (dSYM) projektu. Poniżej znajdziesz instrukcje konfigurowania Xcode, aby automatycznie generować pliki dSYM, przetwarzać je i przesyłać za każdym razem, gdy tworzysz aplikację.
- Otwórz obszar roboczy Xcode projektu, a następnie wybierz plik projektu w nawigatorze po lewej stronie. 
- Z listy CELE wybierz główny cel kompilacji. 
- Kliknij kartę Ustawienia kompilacji, a następnie wykonaj te czynności, aby Xcode generował pliki dSYM dla Twoich kompilacji. - Kliknij Wszystkie, a potem wyszukaj - debug information format.
- Ustaw Format informacji o debugowaniu na - DWARF with dSYM Filedla wszystkich typów kompilacji.
 
- Kliknij kartę Build Phases (Fazy kompilacji), a następnie wykonaj te czynności, aby Xcode mógł przetworzyć pliki dSYM i przesłać je. - Kliknij > New Run Script Phase (Nowa faza skryptu). - Upewnij się, że nowa faza Uruchom skrypt jest ostatnią fazą kompilacji projektu. W przeciwnym razie Crashlytics nie będzie w stanie prawidłowo przetworzyć plików dSYM. 
- Rozwiń nową sekcję Uruchom skrypt. 
- W polu skryptu (pod etykietą Shell) dodaj ten skrypt uruchamiania. - Ten skrypt przetwarza pliki dSYM projektu i przesyła je do Crashlytics. - "${BUILD_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"
- W sekcji Pliki wejściowe dodaj ścieżki do lokalizacji tych plików: - ${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=YESi- ENABLE_DEBUG_DYLIB=YES, uwzględnij te informacje:- ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}.debug.dylib
 
Więcej informacji o plikach dSYM i Crashlytics (w tym o tym, jak ręcznie przesyłać pliki dSYM) znajdziesz w artykule Uzyskiwanie raportów o awariach po usunięciu zaciemnienia kodu.
Krok 3. Wymuś awarię testową, aby dokończyć konfigurację
Aby dokończyć konfigurowanie Crashlytics i wyświetlić pierwsze dane na panelu Crashlytics w konsoli Firebase, musisz wymusić testowe awarie.
- Dodaj do aplikacji kod, którego możesz użyć, aby wymusić awarię testową. - Aby dodać do aplikacji przycisk, który po naciśnięciu spowoduje awarię, możesz użyć tego kodu. Przycisk ma etykietę „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 
- Utwórz i uruchom aplikację w Xcode z odłączonym debugerem Xcode. - Kliknij Kompilacja, a potem uruchom bieżący schemat, aby skompilować aplikację na urządzeniu testowym lub symulatorze. 
- Poczekaj, aż aplikacja zacznie działać, a potem kliknij Zatrzymaj uruchamianie schematu lub działania, aby zamknąć początkową instancję aplikacji. Ta początkowa instancja zawierała debuger, który zakłóca działanie Crashlytics. 
 
- Wymuś awarię testową, aby wysłać pierwszy raport o awarii aplikacji: - Otwórz aplikację na ekranie głównym urządzenia testowego lub symulatora. 
- W aplikacji kliknij przycisk „Test Crash” (Testuj awarię), który został dodany za pomocą powyższego kodu. 
- Po awarii aplikacji uruchom ją ponownie w Xcode, aby mogła wysłać raport o awarii do Firebase. 
 
- Otwórz Crashlyticspanel konsoli Firebase, aby zobaczyć testowy awarię. - Jeśli po odświeżeniu konsoli nadal nie widzisz testowego błędu po 5 minutach, włącz rejestrowanie debugowania, aby sprawdzić, czy aplikacja wysyła raporty o błędach. 
To wszystko. Crashlytics monitoruje teraz Twoją aplikację pod kątem awarii. Otwórz Crashlyticspanel, aby wyświetlić i sprawdzić wszystkie raporty i statystyki.
Dalsze kroki
- Dostosuj konfigurację raportu o awariach, dodając raportowanie za zgodą użytkowników, dzienniki, klucze i śledzenie błędów niekrytycznych.